RESTful服务和更新操作

Igo*_*ejc 13 rest

我知道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>