我应该如何更新REST资源?

我不知道应该如何更新REST资源的各个属性。 考虑下面的例子:

# HTTP GET to /users/1.xml
<?xml version="1.0" encoding="UTF-8" ?>
<response>
   <user>
      <id>1</id>
      <name>John Doe</name>
      <email>john@doe.com</email>
   </user>
</response>

我应该如何方便更新John的电子邮件? 想到HTTP PUT ,但我会通过需要一个完整的XML(匹配HTTP GET响应)来修改资源,从而让我的客户端很难实现。

PUT方法要求封闭实体存储在提供的Request-URI下。 如果Request-URI指向一个已经存在的资源,那么封闭的实体应该被认为是驻留在原始服务器上的修改版本。

有没有其他方法?


如果你的服务器框架足够灵活来处理它,你可以这样做:

Request:
PUT /users/1/email
Content-Type: text/plain

john@newemail.com

Response:
200 OK
Content-Location: /users/1

通过使用URL来引用电子邮件作为自己的资源,您可以使用简单的格式(如文本/纯文本)直接对其进行放置。 在响应中,Content-Location url向客户端指示该更改已对用户资源产生影响。

PATCH方法也是您可以进行部分更新的另一种方法。 这是一种新引入的方法,目前还没有用于发送XML差异文档的标准格式。 所以,如果你采取这种方法,你不会找到太多的指导。

另一件需要考虑的事情是REST对于大规模更新的效果最好。 如果您发现自己需要进行这些小改动,那么您可能需要重新考虑分布式架构。

链接地址: http://www.djcxy.com/p/7095.html

上一篇: How should I update a REST resource?

下一篇: Getting only response header from HTTP POST using curl