如果输入违反了我的约定,我应该发送 400 错误吗?

Posted

技术标签:

【中文标题】如果输入违反了我的约定,我应该发送 400 错误吗?【英文标题】:Should I send 400 errors if the input breaks my convention? 【发布时间】:2014-04-28 05:08:32 【问题描述】:

在 Web 编程中,在 AJAX 系统中,如果我为 POST 输入数据设置了自己的约定,而客户端违反了约定,例如,如果我坚持使用 JSON 输入并且客户端发送非 JSON 或损坏的 JSON,发送 400 错误状态是否正确?或者除了实际的 HTTP 协议错误,我不应该使用它吗?我看过the RFC,上面写着

10.4.1 400 错误请求

由于格式错误,服务器无法理解请求 句法。客户端不应该重复请求 修改。

但是,它实际上并没有说明什么是“格式错误的语法”、HTTP 语法或“我自己的语法”。

请注意,这不是关于 JSON 的问题,我以它为例。

【问题讨论】:

【参考方案1】:

您引用的 RFC 已过时。看看http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-26.html#status.400。

话虽如此,可能对您有用的更具体的状态代码是 422。

【讨论】:

以上是关于如果输入违反了我的约定,我应该发送 400 错误吗?的主要内容,如果未能解决你的问题,请参考以下文章

家庭助理 - 请求失败错误代码 400

Azure Apple 推送通知错误:400 错误请求

这是不是违反了我的 SOLID 原则?

Apollo + React 在执行突变时给了我 400 错误。可能的 httpLink 错误

错误 Bad Request (400),当我访问域上的站点时

如果 REST API 方法失败,我应该返回 200、400 还是 500 HTTP 状态消息?