Каков способ "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?