Mik*_*att 98 rest web-services
将非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的范围?
Tom*_*icz 60
考虑将购买作为业务实体或RESTful字典中的资源.话虽这么说,进行购买实际上是在创造一种新的资源.所以:
POST /api/purchase
Run Code Online (Sandbox Code Playgroud)
将下新订单.应该通过发送到此地址的内容中的id(或URI)引用详细信息(用户,汽车等).
订购汽车不仅仅是数据库中的简单INSERT并不重要.实际上,REST不是将数据库表暴露为CRUD操作.从逻辑的角度来看,您正在创建订单(购买),但服务器端可以自由地执行所需的处理步骤.
您甚至可以进一步滥用HTTP协议.使用Location
header返回新创建的订单的链接,仔细选择HTTP响应代码以通知用户有关问题(服务器端或客户端)等.
djn*_*jna 14
我理解的RESTful方式是你不需要新的HTTP动词,在某个地方有一个名词意味着你需要做什么.
买车?好吧不是那样的
POST /api/order
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27035 次 |
最近记录: |