我知道REST应该是面向资源的,它大致转换为使用标准HTTP方法对这些资源的CRUD操作.但是我只是想更新一部分资源?
例如,假设我有Payment
资源,我想将其状态标记为" paid
".我不希望通过HTTP POST
整个Payment
对象(有时我甚至没有所有数据).
这样做的RESTful方式是什么?我已经看到Twitter使用以下方法更新Twitter状态:
http://api.twitter.com/1/statuses/update.xml?status=playing with cURL and the Twitter API
Run Code Online (Sandbox Code Playgroud)
这种方法是否属于REST的"精神"?
更新:PUT - > POST
我在此期间发现的一些链接:
Jan*_*sen 10
执行此操作的理想方法是更改资源的一个部分(子资源),并让服务器返回303 See Other with Location标头以指向更改的资源.该303查看其它告诉作为请求的结果,其他一些资源已发生变化,客户端应该更新其持有的代表性客户.
在您的示例中(当然是假设的媒体类型):
1. Client retrieves payment representation GET /payments/2 200 Ok Content-Type: application/payment+xml <payment> <status href="/payments/2/status" value="pending"/> </payment> 2. Client updates status PUT /payments/2/status Content-Type: text/plain payed 303 See Other Location: /payments/2 3. Client follows the 303 redirect GET /payments/2 200 Ok Content-Type: application/payment+xml <payment> <status href="/payments/2/status" value="payed"/> </payment>
归档时间: |
|
查看次数: |
12464 次 |
最近记录: |