应用程序希望客户端在大多数路由上发送带有访问令牌的标头Authorization
。现在有了一个新功能,并且一些新的路由不仅期望Authorization
头,而且期望一个pin
属性,该属性在请求的正文中具有6个长度的字符串。如果pin
的值与数据库中存储的用户pin
的值不匹配,则应拒绝该请求。
由于用户已通过身份验证(在Authorization
标头中发送了有效的访问令牌),但应使用错误的pin
来拒绝请求价值吗?
该应用程序现在将支持付款,并且在请求正文中需要pin
属性的路由是进行付款的路由,因此它们会在应用程序内花费用户的积分。这就是为什么它只需要在几条路由上发送pin
的原因。
422 Unprocessable Entity
,因为由于体内pin
值错误而无法处理请求。
422
,因此似乎不正确,因为pin
与授权有关。 / li>
401 Not Authorized
,因为错误的pin
值表示用户未能提供所有正确的凭据。
401
现在将意味着两种错误,而不仅仅是用户未通过身份验证。403 Forbidden
。
额外的问题:pin
在标头而不是正文中发送会更好吗?
答案 0 :(得分:0)
我认为422、403和400都“足够好”。我可能会选择400,因为这是一种特殊情况,恕我直言,状态代码都不完美。