我需要返回有关以下错误的信息:客户无法拥有3个以上的联系人,字段作业为空,操作限制为超过
我是否需要使用自己的状态代码发送每个错误?
我可以将400 BadRequest
用于所有这些错误吗?
答案 0 :(得分:3)
我可以对所有这些错误使用400 BadRequest吗?
当然。
这曾经有点疑问,因为RFC 2616将400 Bad Request定义为:
由于格式错误,服务器无法理解该请求 句法。客户端不应该重复请求 修改
但是,通常没有更适用的更好状态,所以它通常被用作最适合的状态。
这已经改变,RFC 7231废弃了RFC 2616,并为400提供了更广泛的定义:
400(错误请求)状态代码表示服务器不能或 由于被认为是某种东西,它不会处理请求 客户端错误(例如,格式错误的请求语法,无效请求 消息框架或欺骗性请求路由)。
因为"被认为是客户端错误的东西"它涵盖了许多罪行,现在更明确适用。
当然,如果另一个4xx代码确实匹配得更好(例如,对于与不存在的内容相关的请求为404 [消息中的ID没有找到匹配]),那么它是更好的选择。
答案 1 :(得分:1)
我可以将BadRequest(400)用于所有这些错误吗?
是的,这绝对是此类验证错误的正确状态代码。
答案 2 :(得分:0)
我可以将BadRequest(400)用于所有这些错误吗?
400 Bad Request
状态代码用于指示与请求语法相关的错误。例如。有一个String
类型的字段,并传递了Integer
。或者作为类型String
的字段接受一组预定义值(枚举)但传递另一个字符串。有一个领域缺失。字段不能为空。
因此,如果字段丢失或为空,则肯定是400 Bad Request
错误。
然而,当谈到客户不能超过3个联系人时,它并不是那么清楚。如果您已将主体限制为接受0-3范围内的值,则为400 Bad Request
,但是如果该字段接受任何整数,并且事后证明它不是在0-3之后(在实体处理期间)它将是409 Conflict
(更好的主意)或403 Forbidden
(更糟糕的主意)。
超出了操作限制肯定听起来不像是400 Bad Request
错误。它可能是403 Forbidden
或429 Too Many Requests
。
您似乎无法仅使用400 Bad Request
来处理所有错误。
总是在身体信息中解释问题的真正重要性。
BTW:403 Forbidden
用于表示不一定与身份验证或授权相关的禁止操作。
答案 3 :(得分:-1)
不,显然你不应该,你应该在浏览器中搜索“HTTP状态代码列表”。
可用的一个链接是https://en.wikipedia.org/wiki/List_of_HTTP_status_codes。