未通过验证的REST HTTP状态代码或无效副本

我正在用一个基于REST的API构建一个应用程序,并且已经到了我为每个请求指定状态代码的地步。

我应该发送什么状态代码来验证未通过验证的请求,或者请求是否尝试在我的数据库中添加副本?

我浏览过http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html,但没有一个看起来是正确的。

发送状态码时是否有通常的做法?


对于输入验证失败:400错误请求+您的可选描述。 这是在“REST风格的Web服务”一书中建议的。 双提交:409冲突


2014年6月更新

相关的规范曾经是RFC2616,它使用了400(错误请求)而非狭义的

由于格式错误,服务器无法理解请求

所以可能有人认为这对于语义错误是不恰当的。 但不再是; 自2014年6月起,取代先前RFC2616的相关标准RFC 7231更广泛地使用了400(不良请求)

由于某些被认为是客户端错误的事件,服务器无法或不会处理该请求


  • 验证失败:403 Forbidden(“服务器理解请求,但拒绝履行)”。 与流行的观点相反,RFC2616并没有说“403只是用于失败的认证”,而是“403:我知道你想要什么,但我不会这么做”。 该情况可能会或可能不会由于身份验证。
  • 尝试添加副本:409冲突(“由于与资源的当前状态发生冲突,请求无法完成”)。
  • 您应该在响应标题和/或正文中给出更详细的解释(例如,使用自定义标题 - X-Status-Reason: Validation failed )。


    我推荐状态码422,“不可处理的实体”。

    11.2。 422不可处理的实体

    422(不可处理的实体)状态码意味着服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态码不合适),并且请求实体的语法是正确的(因此400(错误请求)状态码不合适),但无法处理包含的说明。 例如,如果XML请求体包含格式正确(即,语法正确),但语义错误的XML指令,则可能会出现此错误情况。

    链接地址: http://www.djcxy.com/p/1223.html

    上一篇: REST HTTP status codes for failed validation or invalid duplicate

    下一篇: Understanding REST: Verbs, error codes, and authentication