Ati*_*ziz 63 http http-status-codes http-status-code-400
的HTTP/1.1规范(RFC 2616)具有以下对的意义上说的状态代码400,错误的请求(§10.4.1) :
由于语法格式错误,服务器无法理解请求.客户端不应该在没有修改的情况下重复请求.
现在,在一些基于HTTP的API中似乎存在一种普遍的做法,即使用400来表示请求的逻辑错误而不是语法错误.我的猜测是API这样做是为了区分400(客户端引发)和500(服务器引发).使用400表示非语法错误是否可接受或不正确?如果可以接受,RFC 2616上是否有注释参考,可以更深入地了解400的预期用途?
例子:
Jul*_*hke 62
我想到状态422(RFC 4918,第11.2节):
422(不可处理实体)状态代码表示服务器理解请求实体的内容类型(因此415(不支持的媒体类型)状态代码是不合适的),并且请求实体的语法是正确的(因此400(错误请求) )状态代码不合适)但无法处理包含的指令.例如,如果XML请求主体包含格式正确(即语法正确)但语义错误的XML指令,则可能发生此错误情况.
HTTPbis将解决400 Bad Request的措辞,以便它也涵盖逻辑错误.所以400将合并422.
来自https://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-18#section-7.4.1
"由于客户端错误(例如,格式错误,服务器无法或不会处理请求)句法)"