将非CRUD操作添加到RESTful服务的"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
Run Code Online (Sandbox Code Playgroud)
如果我想改变汽车的颜色,我会简单地POST /api/car/123为新颜色添加一个POST变量.
但是,假设我想购买一辆汽车,而且这种操作比简单地更新"用户"记录的"拥有汽车"属性更复杂.简单地做一些类似于POST /api/car/123/purchase"购买"本质上是方法名称的东西是RESTful 吗?或者我应该使用自定义HTTP动词,PURCHASE而不是POST?
或者非CRUD操作是否完全超出REST的范围?