Что делать, если ресурсы REST связаны с уже существующими ресурсами и расширяют их?

Я создаю 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."
}
6
задан horte 24 April 2012 в 13:54
поделиться