Скажем, у меня есть несколько бизнес-объектов, которые я хочу запросить у БД, и сделать это в веб-API.Скажем, клиенты и заказы.Каждый заказ может иметь ровно одного клиента.
Скажи, что я хотел получить- все заказы для данного клиента- для данного заказа верните объект, который содержит некоторые атрибуты клиентов, а также 5 последних заказов клиентов:
https://github.com/Microsoft/api-guidelines/blob/master/Guidelines.md#71-url-structure
Я обычно использую имена методов, подобные этим.
OrdersController:- GetOrders- GetordersforCustomer (int CustomerId)- GetOrderWithCustomerInfo (int CustomerId)
CustomerController- GetCustomer (int id)- GetCustomerWithinZipcode
Таким образом, использование методов контроллера API, подобных этому, не соответствует "рекомендациям" REST, которые я видел в других местах, верно?Если нет, то как я могу реструктурировать свои контроллеры, чтобы они соответствовали именам стандартных HTTP-методов, особенно когда есть связанные сущности?
Например, мне нужен вызов, который возвращает объект, который включает атрибуты не только из порядка, но и из5 лучших заказов от клиента по текущему заказу.Мне нужен метод, который получает результат заказа, но также нужен метод, который получает другой тип результата заказа - один с некоторыми атрибутами от клиента и / или, возможно, нескольких других объектов.
пример того, о чем я говорю - использование только http глаголов, но со связанными сущностямиhttps://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api#restful Но как вы относитесь к отношениям?Если отношение может существовать только в другом ресурсе, принципы RESTful предоставляют полезное руководство.Давайте посмотрим на это на примере.Билет в Enchant состоит из нескольких сообщений.Эти сообщения могут быть логически сопоставлены с конечной точкой / tickets следующим образом:
GET /tickets/12/messages - Retrieves list of messages for ticket #12
GET /tickets/12/messages/5 - Retrieves message #5 for ticket #12
POST /tickets/12/messages - Creates a new message in ticket #12
PUT /tickets/12/messages/5 - Updates message #5 for ticket #12
PATCH /tickets/12/messages/5 - Partially updates message #5 for ticket #12
DELETE /tickets/12/messages/5 - Deletes message #5 for ticket #12