(Django REST) ​​Разработка API: 1 путь с несколькими параметрами запроса или несколько путей? - PullRequest
0 голосов
/ 15 июня 2019

Предположим, у нас есть конечная точка books, в которую мы можем возвращать сериализованные объекты Book. Большинство времени, это книги, которые уже опубликованы (поэтому future опущено), а большинство времени мы будем отображать список книг , принадлежащий какой-то пользователь.(таким образом, пользовательский параметр в основном присутствует, и мы в основном фильтруем книги, принадлежащие какому-либо пользователю)

Пример запроса:

http://localhost:8000/api/books?future=true
http://localhost:8000/api/books?user=somebody
http://localhost:8000/api/books?future=true&user=somebody

Мне интересно, выглядит ли приведенная выше структура нормально.Другие идеи, некоторые кажутся хуже других, пришли на ум.Например, другая необязательная конечная точка / путь (вместо первого):

// this makes the least sense to me
http://localhost:8000/api/books/somebody?future=true

Я также размышлял, имеет ли смысл получать эти книги с конечной точки users:

http://localhost:8000/api/users/somebody/books
http://localhost:8000/api/users/somebody/books?future=true

И тогда я также могу позвонить:

http://localhost:8000/api/users/somebody/settings

Согласны ли вы, что второй вариант не имеет смысла?

Могут ли первый и третий примеры жить рядом друг с другом?

Полагаю, я действительно спрашиваю: возможно ли достичь одинаковых ресурсов двумя разными способами в дизайне REST?Как вы предпочитаете одно над другим?Когда вы применяете только один?когда вы разрешаете оба (если вообще)?

В этом случае конечные точки API будут использоваться будущим приложением для iOS, разработанным мной, но я не думаю, что это должно иметь отношение к вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...