Який "RESTful" спосіб додавання не-CRUD-операцій до служби RESTful? Скажіть, у мене є служба, яка дозволяє CRUD отримати доступ до таких записів:
GET /api/car/123 <- Returns information for the Car object with ID 123
POST /api/car <- Creates a new car (with properties in the request)
PUT /api/car/123 <- Updates car 123 (with properties in the request)
DELETE /api/car/123 <- Deletes car 123
POST /api/car/123/wheel/ <- Creates a wheel and associates it to car 123
Якщо я хочу змінити колір автомобіля, я б просто POST /api/car/123
включив змінну POST для нового кольору.
Але скажімо, що я хочу придбати автомобіль, і ця операція є складнішою, ніж просто оновлення власності "власного автомобіля" запису "користувача". Чи РЕЗЕМНО просто робити щось на кшталт POST /api/car/123/purchase
, де "покупка" - це по суті назва методу? Або я повинен використовувати користувацьке дієслово HTTP, наприклад PURCHASE
замість POST
?
Або операції, що не стосуються CRUD, повністю виходять за рамки REST?
PATCH /api/car/123
і надіслати кольоровий параметр АБО використовуватиPUT /api/car/123
та відправити весь автомобільний об’єкт. POST може зробити висновок про те, що ви створюєте новий автомобіль і, ймовірно, ніколи не повинен містити ідентифікатор в кінці URL