Http PUT做增量更新

时间:2011-10-14 22:31:44

标签: http rest post restlet put

我们已经实施了RESTful Web服务。这是它的样子

GET /person/1234
GET /person/list

POST /person
POST /person/list

PUT /person/1234
PUT /person/list

基本上,要创建一个Person,您可以POST到/ person或/ person / list

要更新某人,请将其PUT转至/ person / 1234或/ person / list

一个人看起来像这样:

<person>
  <id>1234</id>
  <name>Name1</name>
  <age>50</age>
  <education>high school</education>
</person>

问题: 我可以通过发送

来使用PUT来更新某人
<person>
  <age>55</age>
</person>

据我了解PUT,您无法将其用于增量更新。我不应该使用POST来做吗?

我们可以放宽PUT对这个用例的定义,使术语变得简单。因为PUT意味着更新,POST将意味着创建。

假设您无法要求客户端发送更新的完整资源表示。

3 个答案:

答案 0 :(得分:1)

如果您的客户支持,我认为您正在寻找PATCH

  

PATCH 以可预测且有效的事务方式覆盖指定资源的一部分(如果无法执行整个补丁,则服务器不应该执行任何部分)

答案 1 :(得分:1)

你会被反复告知你不应该做部分PUT。规范说你不应该这样做。但是,我还没有听到有关这样做的负面影响的令人信服的论点。

此主题的一个较长线程是http://tech.groups.yahoo.com/group/rest-discuss/message/17500

答案 2 :(得分:0)

虽然不是很受欢迎,但有一个PATCH verb in HTTP。这是它的目的,但不确定是谁实现它。 POST通常用于补丁,但据我所知,它不是REST标准,但是如果你在你的环境中得到那个约定,你可以实现它。