2011-04-08 102 views
3

当在资源上定义PUT方法时,它是否需要/ standard/customary包含资源的整个定义(即创建资源的所有内容),还是只发送更新的字段也可以接受?PUT请求体必须包含整个实体吗?

例如,如果我有10属性的资源,其中包括一个名为数量,我想更新数量为指定的值。只可以批量购买吗?

那其他9个属性?假设每个属性都可以单独更新,定义请求主体是否只需将所有10个属性设置为可选是一种好的做法? REST风格使用时

回答

4

PUT打算更换整个资源,所以你会希望包括全套属性。

也就是说,剩下的就是使用不当,而在大多数情况下,无论如何,只要你的API是记录良好,你可以做任何你认为最适合您的情况。

+0

谢谢贾斯汀。理由显然是为了减少带宽/串行化开销,但是回想我的RMI设计,我总是要求客户端发送修改的*对象*而不是简单的字段。然后服务器将决定是否询问修改或完全替换。客户端可以非常简单 - GET,修改,PUT - 没有其他逻辑和简单的接口。 – 2011-04-08 16:59:33

+0

是的,使用PUT替换整个资源要好得多。 [PATCH方法](http://tools.ietf.org/html/rfc5789)偶尔会用于部分更新。 – 2011-04-08 19:30:30

相关问题