坏数据的HTTP状态代码

Ben*_* K. 37 http http-status-codes

当客户端发布错误数据时,我应返回什么HTTP状态代码(例如,当预期整数时为字符串)?

我一直在使用400 Bad Request,但是当我阅读似乎更适用于HTTP协议错误的HTTP文档时.

我想使用状态代码,以便Flash和AJAX客户端可以区分成功,错误数据和服务器错误,而无需解析响应.

ska*_*man 50

这正是400的用途.是的,它用于错误的HTTP协议使用,但它并不仅仅用于此目的.

  • 在那个实例中,404将是最好的事情@KevinMeredith (9认同)

Rob*_*lls 6

当客户端点击提交按钮时,我真的更倾向于将错误的数据反馈到浏览器中.

如果没有,那么我将返回400,因为标准说:

由于语法格式错误,服务器无法理解请求.客户端不应该在没有修改的情况下重复请求.

  • 你应该两个都做.无法保证浏览器使用您的API.:) (5认同)
  • 永远不要相信 UI 会发出正确的请求。你绝对应该返回400。 (2认同)

GKi*_*lin 6

如果语法错误,请使用“400 Bad Request”

由于语法格式错误,服务器无法理解该请求。客户端不应该在没有修改的情况下重复请求。

如果数据错误(和正确的语法),请使用“422 Unprocessable Entity”

422(不可处理实体)状态码意味着服务器理解请求实体的内容类型(因此 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 代码均正确。