返回205“重置内容”以进行RESTful部分更新?

时间:2012-03-23 20:06:39

标签: web-services http rest

205 - 重置内容是否在将部分更新应用于资源并且响应中未返回更新的资源文档时返回相应的响应代码?

更新: 我正在创建一个Web服务,它将支持对资源URL的部分更新。一种选择是返回200以及更新的资源文档。似乎另一种选择可能是返回205 - 重置内容,而不包含指示客户端应该发起资源的GET的更新表示。看起来这与返回201 w /一个Location头并且没有资源创建主体(这是我目前正在为资源创建做的事情)一致。

2 个答案:

答案 0 :(得分:3)

没有理由不简单地使用状态代码200.

答案 1 :(得分:2)

我仍然没有发现你的问题解释了你要解决的问题,但这是我的猜测和答案:

问:您希望通过发送PUT / myResource来获得调用者可以更新的资​​源,但出于某种原因,您不希望仅在某种程度上更新整个资源(?)。

A1:我没有听说过部分更新作为模式。您可能希望考虑将资源拆分为许多较小的资源。这可能会使开发更容易,并且API的用户可以理解。

正如您在进行更新时,不应使用在评论中提及的

A2:201(“已创建”)。

A3:205(“重置内容”)确实听起来并不完全错误,因为您希望客户端使其数据无效但问题仍然存在 - 为什么?此外,如果客户端数据的一部分仅在服务器上更新,则不希望客户端删除整个表示。

A4:如果客户端表示在PUT之后变为无效,我会说返回303(“See Other”)并将Location头设置为数据的URI是正确的方法,即使URI有没有改变。