Bre*_*ias 5 rest http http-status-codes
尽管RFC 7231 的目的是使内容更加清晰,但它显然带来了有关状态代码 400 的歧义。请注意此SO 答案和评论。一个人说 400 现在包括逻辑、应用程序或验证错误,另一个人说 400 仍然仅用于语法或验证错误。
6.5.1. 400 Bad Request
400(错误请求)状态代码表示服务器由于被认为是客户端错误的原因而无法或不会处理请求(例如,格式错误的请求语法、无效的请求消息帧或欺骗性的请求路由) 。
我想得到关于这个问题更明确的答案。考虑 POST 或 PUT 尝试提供电子邮件地址的两种情况:
我想遵循 RFC 7231。我对 6.5.1 的阅读告诉我验证错误应该收到 409(或 422)响应。但其他人不同意,并声称现在应该是 400。
有谁有更多信息可以解决这种歧义吗?
在这种情况下,发送 200 是一个很好的状态代码。毕竟,如果您没有输入有效的邮政编码,HTML 表单会返回 4xx 吗?
状态代码用于一般使用,而不是特定于应用程序的语义。当非特定接收者(例如代理、缓存、HTTP 库)进来时可以做一些有趣的事情时,它们非常有用。
因此,当由于客户端问题(例如错误的请求HTTP语法)而出现错误时,将使用 400。它在 7231 中变得更加通用,因为 x00 状态代码是其系列中最通用的,并且在未定义更具体的状态代码时应将其视为后备。
您也可以使用 400 来表示验证错误,理论上它会稍微有帮助,因为 HTTP 库知道不重复该请求 - 但如果它是 200,当然不值得太担心。
| 归档时间: |
|
| 查看次数: |
6228 次 |
| 最近记录: |