Я создаю REST API, где у меня есть «Книги» и «Пользователи». Их может существовать только одна уникальная Книга. Хотя у пользователя может быть несколько книг, и разные пользователи могут иметь одну и ту же книгу (или ссылку на одну и ту же ). Пользователь может добавить дополнительную информацию в книгу (, например. рейтинг ).
У меня вопрос: :Как правильно сопоставить ресурсы, когда пользователи «расширяют» уже существующий ресурс «Книга» со своими собственными настройками?
Пример :У первого пользователя нет Книг, но он может создать Книгу. Если Книги нет, она создается, если она есть, к ней получают доступ. Хотя они могут добавить к нему свою частную дополнительную информацию.
Это правильный путь?
//Все книги с основной необходимой информацией доступны по адресу /books/ :id Пример :/книги/1 {
"id":1,
"title":"The Empire",
"description":"Description about the book",
"serial":1234
}
//Если пользователь создает книгу "Империя" (сериал :1234 ), он расширяет уже существующую книгу, но добавляет дополнительную информацию, поэтому на самом деле это новая URL, но относится к идентификатору книги.
Пример :/users/421/books/1/
{
"id":1,
"title":"The Empire",
"description":"Description about the book",
"serial":1234,
"rating":5.5,
"note":"I liked the book but it was too long."
}
Или даже:
{
"book":{
id":1,
"title":"The Empire",
"description":"Description about the book",
"serial":1234,
}
"rating":5.5,
"note":"I liked the book but it was too long."
}
Или даже URL что-то вроде /users/421/books/1/settings/
{
"rating":5.5,
"note":"I liked the book but it was too long."
}