1

当使用“If-Match”标头执行 PUT 或 DELETE 时,如果客户端发送的 ETag 指示过时,而不是仅返回 412,我想返回整个最新实体(包括其HTTP 标头中的新 ETag),因此客户端不必执行另一个 GET 往返,否则他们肯定会这样做 - 在我的用例中,至少在 100% 的情况下他们会这样做。

我在 412 的文档中没有看到任何支持或反对的内容:http: //www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.13

比如说,状态码 409,一般来说,对 4xx 错误的响应主体做任何喜欢的事情似乎都不是问题:http: //www.w3.org/Protocols/rfc2616/rfc2616 -sec10.html#sec10.4.10

那么,有什么东西(尤其是在 HTTP 规范中)反对返回完整的最新实体及其 ETag?

4

2 回答 2

1

应该没事:

所有 1xx(信息)、204(无内容)和 304(未修改)响应不得包含消息正文。所有其他响应都包含消息体,尽管它的长度可能为零。

来源:http ://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3

于 2011-10-11T04:51:18.723 回答
0

请求是什么?使用 If-None-Match 获取?在这种情况下,服务器无论如何都不应该返回 412。

对于 PUT、DELETE,您当然可以返回当前表示。对于大型表示,这对于不需要它的客户来说会很不方便。

您可能还希望使用 Location 标头将有效负载标记为资源的表示;请参阅http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-16.html#identifying.response.associated.with.representation

于 2011-09-14T11:52:30.407 回答