缺少 if-match header 的 HTTP 响应状态

HTTP response status for missing if-match header

我有一个 REST-ful 服务,它使用 ETag 和 If-Match headers 来控制更新。

如果客户端提交带有 If-Match header 的条件请求,并且 ETag 已过时,我将返回 412 Precondition Failed,这似乎是解决 ETag 不匹配的推荐方法.

但是如果客户提交时没有 If-* header 怎么办?我对 412 的理解是它适用于客户端先决条件。由于客户没有提交 If-Match header,因此没有客户先决条件。但是如果我想要求 If-Match,我应该使用什么响应?

到目前为止,我的想法可能是 400 Bad Request 或 409 Conflict。有什么最佳做法吗?

我认为代码400有点笼统,但可以应用。在这种情况下,您需要在响应内容中提供有关问题的更多详细信息。

IMO,如果与资源的当前状态存在冲突,则应使用代码 409。我认为更多的是在你自己实现优化锁定而不使用 headers ETagIf-*.

的情况下

我看到一个代码428(需要前提条件)似乎符合您的需求。

以下页面可以为您提供更多详细信息:http://www.restapitutorial.com/httpstatuscodes.html

希望对你有帮助, 蒂埃里