我应该如何更新REST资源?

我应该如何更新REST资源?,rest,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>

我不确定应该如何更新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>
#HTTP GET to/users/1.xml
1.
无名氏
john@doe.com
我应该如何帮助更新John的电子邮件<我想到的是code>httpput,但是我需要一个完整的XML(匹配httpget响应)来修改资源,这会给我的客户机带来困难

PUT方法要求 封闭实体应存储在 提供的请求URI。如果 请求URI引用已存在的 现有资源,封闭的实体 应将其视为修改后的 驻留在服务器上的服务器的版本 原始服务器


还有其他方法吗?

如果您的服务器框架足够灵活,可以执行以下操作:

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

john@newemail.com

Response:
200 OK
Content-Location: /users/1
通过使用URL将电子邮件作为自己的资源引用,您可以使用简单的格式(如text/plain)直接将其放入。在响应中,内容位置url向客户端指示更改对用户资源产生了影响

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

另一个需要考虑的是,REST在大粒度更新中工作得最好。如果您发现自己需要进行这些小的更改,那么您可能需要重新考虑您的分布式体系结构