Что такое 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 для нового цвета.
Но предположим, что я хочу купить автомобиль, и эта операция более сложна, чем простое обновление свойства «собственный автомобиль» записи «пользователь». Является ли RESTful просто делать что-то вроде POST /api/car/123/purchase
, где «покупка», по сути, является именем метода? Или мне следует использовать собственный HTTP-глагол, например, PURCHASE
вместо POST
?
Или операции, не относящиеся к CRUD, полностью выходят за рамки REST?
PATCH /api/car/123
и отправить параметр цвета ИЛИ использоватьPUT /api/car/123
и отправить весь объект автомобиля. POST будет означать, что вы создаете новую машину и, вероятно, никогда не должны включать идентификатор в конце URL-адреса