3 回答
TA贡献1818条经验 获得超3个赞
如果“验证失败”表示请求中存在某些客户端错误,请使用HTTP 400(错误请求)。例如,如果URI应该具有ISO-8601日期,而您发现它的格式错误或引用的日期是2月31日,则您将返回HTTP400。如果您希望实体主体中格式正确的XML,则返回同上。它无法解析。
(1/2016):在过去的五年中,WebDAV更为特定的HTTP 422(不可处理实体)已成为HTTP 400的非常合理的替代品。例如,请参见JSON API中的用法。但是请注意,HTTP 422 尚未将其纳入HTTP 1.1,RFC-7231中。
Richardson和Ruby的RESTful Web服务包含了有关何时使用各种HTTP响应代码的非常有用的附录。他们说:
400(“错误请求”)的
重要性:高。
这是一般的客户端错误状态,在没有其他合适的4xx错误代码时使用。当客户端与PUT或POST请求一起提交表示形式且表示形式格式正确时,通常会使用该格式,但这没有任何意义。(第381页)
和:
401(“未授权”)
重要性:高。
客户端尝试在受保护的资源上操作而未提供适当的身份验证凭据。它可能提供了错误的凭据,或者根本没有提供。凭据可以是用户名和密码,API密钥或身份验证令牌,无论所涉及的服务期望什么。客户端通常会发出一个URI请求并接受一个401,以便它知道要发送哪种凭证以及采用哪种格式。[...]
TA贡献1820条经验 获得超2个赞
这里是:
rfc2616#section-10.4.1-400错误的请求
由于语法格式错误,服务器无法理解该请求。客户不应在没有修改的情况下重复请求。
rfc7231#section6.5.1-6.5.1。400错误的要求
400(错误请求)状态代码表示服务器由于某些原因(例如格式错误的请求语法,无效的请求消息框架或欺骗性的请求路由)而无法或将不会处理请求。
指格式错误(格式不正确)的情况!
rfc4918-11.2。422无法处理的实体
422(不可处理实体)状态代码表示服务器
理解请求实体的内容类型(因此415(不支持的媒体类型)状态代码不合适),并且请求实体的语法正确(因此400(错误请求) )状态代码不合适),但无法处理其中的说明。例如,如果XML请求主体包含格式正确(即,语法正确)但语义错误的 XML指令,则可能发生此错误情况。
结论
经验法则:[_] 00涵盖最普通的情况以及指定代码未涵盖的情况。
422最适合对象验证错误(精确地是我的建议:)
至于语义上的错误-考虑类似“此用户名已存在”验证之类的事情。
400错误地用于对象验证
添加回答
举报