我应该如何更新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