这是一个概念问题。
我有一个客户端(移动)应用程序,它需要支持针对 RESTful Web 服务的登录操作。因为 Web 服务是 RESTful 的,这相当于客户端接受用户的用户名/密码,使用服务验证该用户名/密码,然后只记得在所有后续请求中发送该用户名/密码。
此 Web 服务中的所有其他响应均以 JSON 格式提供。
问题是,当我查询 Web 服务只是为了查明给定的用户名/密码是否有效时,Web 服务是否应该始终以 JSON 数据响应告诉我其成功或不成功,或者它是否应该在良好的凭据和 HTTP 上返回 HTTP 200 401 错误凭据。
我问的原因是,即使您只是询问凭据是否有效,其他一些 RESTful 服务也会使用 401 作为错误凭据。但是,我对 401 响应的理解是,它们代表了您在没有有效凭据的情况下不应访问的资源。但是任何人都应该可以访问登录资源,因为登录资源的全部目的是告诉您您的凭据是否有效。
换句话说,在我看来,这样的请求是:
myservice.com/this/is/a/user/action
如果提供了错误的凭据,则应返回 401。但是像这样的请求:
myservice.com/are/these/credentials/valid
永远不应返回 401,因为该特定 URL(请求)被授权使用或不使用有效凭据。
我想以一种或另一种方式听到一些合理的意见。处理这个的标准方式是什么,处理这个的标准方式在逻辑上是否合适?