当客户端提交错误数据(例如期望输入整数但提交了字符串)时,我应该返回什么HTTP状态码?
我一直在使用400 Bad Request,但根据阅读HTTP文档,这似乎更适用于HTTP协议错误。
我希望使用一个状态码,以便Flash和AJAX客户端可以区分成功、错误数据和服务器错误,而无需解析响应内容。
当客户端提交错误数据(例如期望输入整数但提交了字符串)时,我应该返回什么HTTP状态码?
我一直在使用400 Bad Request,但根据阅读HTTP文档,这似乎更适用于HTTP协议错误。
我希望使用一个状态码,以便Flash和AJAX客户端可以区分成功、错误数据和服务器错误,而无需解析响应内容。
这正是400状态码存在的原因。是的,它用于处理不良的HTTP协议使用情况,但并非仅限于此。
如果语法错误,请使用"400 Bad Request"
由于格式不正确,服务器无法理解请求。客户端不应重复未经修改的请求。
如果数据错误(且语法正确),请使用“422 Unprocessable Entity”
422(Unprocessable Entity)状态代码表示服务器了解请求实体的内容类型(因此415(不支持的媒体类型)状态代码不合适),并且请求实体的语法是正确的(因此400(错误请求)状态代码不合适),但无法处理所包含的指令。例如,如果XML请求正文包含形式良好(即语法正确)但语义上错误的XML指令,则可能发生此错误条件。
参见https://www.bennadel.com/blog/2434-http-status-codes-for-invalid-data-400-vs-422.htm
另请参见https://softwareengineering.stackexchange.com/a/342896/158699答案,其中包括正确的400和422代码。