繁体   English   中英

如果出现412“前提条件失败”,是否可以返回实体的最新版本?

[英]Is it OK to return most recent version of the entity in case of a 412 “Precondition failed”

当使用“ 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吗?

应该没事:

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

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

有什么要求? GET是否符合条件? 在这种情况下,服务器不应该返回412。

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

您可能还想通过使用Location标头将有效负载标记为资源的表示形式。 参见http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-16.html#identifying.response.associated.with.representation

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM