缺少 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 ETag
和 If-*
.
的情况下
我看到一个代码428
(需要前提条件)似乎符合您的需求。
以下页面可以为您提供更多详细信息:http://www.restapitutorial.com/httpstatuscodes.html。
希望对你有帮助,
蒂埃里
我有一个 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 ETag
和 If-*
.
我看到一个代码428
(需要前提条件)似乎符合您的需求。
以下页面可以为您提供更多详细信息:http://www.restapitutorial.com/httpstatuscodes.html。
希望对你有帮助, 蒂埃里