错误数据的HTTP状态代码

问题描述 投票:38回答:3

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

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

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

http http-status-codes
3个回答
51
投票

这正是400的用途。是的,它用于不良的HTTP协议用法,但并非专门用于此目的。


6
投票

当客户端点击提交按钮时,我真的更倾向于在浏览器中捕获不良数据。

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

由于语法格式不正确,服务器无法理解该请求。客户不应在未经修改的情况下重复请求。


0
投票

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

由于语法格式不正确,服务器无法理解该请求。客户不应在未经修改的情况下重复请求。

如果数据错误(并且语法正确),请使用“ 422无法处理的实体”

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代码。

© www.soinside.com 2019 - 2024. All rights reserved.