为了账号安全,请及时绑定邮箱和手机立即绑定

REST API服务针对验证失败返回什么适当的HTTP状态代码?

REST API服务针对验证失败返回什么适当的HTTP状态代码?

呼啦一阵风 2019-11-05 10:37:20
每当我在基于Django / Piston的REST API应用程序中遇到验证失败时,我当前都会返回401未经授权。看过HTTP状态代码注册表后, 我不认为这是验证失败的合适代码,大家都建议什么?400错误的要求401未经授权403禁止405方法不允许406不可接受412前提条件失败417期望失败422无法处理的实体424依赖失败更新:上面的“验证失败”表示应用程序级别的数据验证失败,即,错误指定的日期时间,虚假的电子邮件地址等。
查看完整描述

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,以便它知道要发送哪种凭证以及采用哪种格式。[...]


查看完整回答
反对 回复 2019-11-05
?
DIEA

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错误地用于对象验证


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 1102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信