Я создаю RESTful-приложение и не знаю, как мне обрабатывать запросы, которые не возвращают все сущности ресурса или не возвращают несколько ресурсов (запрос GET /resource/all
). Пожалуйста, позвольте мне несколько минут, чтобы настроить ситуацию (я постараюсь обобщить это как можно больше, чтобы оно могло относиться к другим, кроме меня):
Допустим, я создаю API продукта. Для простоты, допустим, он возвращает JSON (после того, как отправлены правильные заголовки accept). Продукты можно получить по адресу /product/[id]
. У продуктов есть обзоры, к которым можно получить доступ в /products/[id]/review/[id]
.
Мой первый вопрос заключается в этом шаблоне подресурса. Поскольку вам не всегда нужны отзывы при получении продукта, они доступны по другому URI. Из того, что я прочитал, я должен включить URI запроса, который будет возвращать все отзывы URI для продукта, в ответ на запрос продукта. Как мне поступить так, чтобы оно соответствовало стандартам RESTful? Должен ли это быть заголовок типа Reviews-URI: /product/123/review/all
или я должен включить URL-адрес в тело ответа следующим образом:
{ 'name': 'Shamwow',
'price': '$14.99',
'reviews': '/product/123/review/all'
}
Мой второй вопрос о том, как должен работать запрос /product/[id]/review/all
. Я слышал, что я должен просто отправить URL-адреса всех обзоров и заставить пользователя ПОЛУЧИТЬ каждый из них, а не упаковывать их все в один запрос. Как мне указать этот массив URI для проверки в соответствии со стандартами RESTful? Должен ли я использовать заголовок или список URI в теле ответа следующим образом:
{ 'reviews': [ '/product/123/review/1',
'/product/123/review/2',
'/product/123/review/3'
]
}