Представьте себе ресурс, такой как авторы. Автор имеет несколько книг, несколько фотографий и т. Д.REST API и загрузка загруженных ресурсов
На некоторых страницах моего приложения мне нужны только данные авторского права, такие как имя. На других страницах мне нужны все вложенные ресурсы. Как обрабатывать загрузку вложенных ресурсов?
ли я загрузить все в одном вызове, что:
GET/авторы возвращает { имя: х, книги: { BookName: а, ... }}Примите необязательный параметр, который указывает вложенные объекты, например:
GET/авторы? Include = books & Фотографии- Возвращайте только данные об авторских правах, затем извлекайте связанные ресурсы в последующих вызовах. Тем не менее, это может привести к п + 1 запросов типа, такие как:
GET/авторы
GET/автора/1/изображений
GET/автора/1/книги
Любое понимание ценится
Это похоже на самый чистый подход. Наверное, я не должен беспокоиться о потенциальном штрафе за исполнение, пока он не станет реальным вопросом? – recipherus
@recipherus, клиенты вашего сервиса REST, вероятно, ожидают, что большинство операций, перечисленных выше (кроме _GET/authors/{authorId}/detail_), будут присутствовать в вашем API. Но нечего добавлять методы, которые будут оптимизировать некоторые вызовы. Как и в вашем примере: _GET/авторы/{authorId}/подробный? Include = books & pictures_. Таким образом, вы можете комбинировать свои 2 и 3 подхода, чтобы получить баланс чистого REST и производительности. – ialekseev