最佳答案
这是一个概念性的问题。
我有一个客户端(移动)应用程序,它需要支持针对 RESTful Web 服务的登录操作。因为 Web 服务是 RESTful 的,这相当于客户机从用户那里接受一个用户名/密码,用服务验证该用户名/密码,然后只需记住随后的所有请求发送该用户名/密码。
此 Web 服务中的所有其他响应都以 JSON 格式提供。
问题是,当我查询 Web 服务只是为了找出一个给定的用户名/密码是否有效时,Web 服务是否应该总是用 JSON 数据告诉我它的成功还是失败,或者它是否应该在良好凭证上返回 HTTP 200,在不良凭证上返回 HTTP 401。
我问这个问题的原因是,其他一些 RESTful 服务使用401作为坏凭据,即使您只是询问凭据是否有效。然而,我对401响应的理解是,它们代表了一种资源,如果没有有效的凭据,您就不应该访问这种资源。但是登录资源应该是任何人都可以访问的,因为登录资源的全部用途是告诉您您的凭证是否有效。
换句话说,在我看来,这样的请求:
myservice.com/this/is/a/user/action
如果提供了不良凭证,则应返回401。但是,如果提出以下请求:
myservice.com/are/these/credentials/valid
应该永远不会返回401,因为该特定的 URL (请求)是授权或没有有效的凭据。
不管怎样,我希望听到一些合理的意见。处理这个问题的标准方法是什么? 处理这个问题的标准方法在逻辑上是否合适?