我们正在设计一个 RESTful 后端服务,它以两种模式列出消息:经过身份验证的和未经身份验证的。如果请求经过身份验证(即,它包含 Authorization
header ),则应显示私有(private)消息和公共(public)消息。如果请求未经身份验证,则仅应显示公共(public)消息。
处理包含 Authorization
header 但凭据已过期的请求的 RESTful 方式是什么?
- 仅列出公共(public)消息;
- 返回 401,就好像凭据无效;
- 另一个状态代码;哪一个?
我倾向于 401,但这对前端来说有点令人困惑,因为它表明凭据是必需的,而在我们的例子中它们是可选的。是否有某种已知的“可选身份验证失败”的 REST 实践?
最佳答案
如果调用者想要获取私有(private)消息,您可以要求不同的 URL。对于给定的 URL,REST 响应通常应该相同,因为该假设将简化很多事情,例如此身份验证问题。像这样的事情会起作用:
/messages?private=true # requires auth
/messages # doesn't require auth
现在,如果 private=true
且凭据无效/过期,您可以返回 401,而如果 private 为 false/省略,则凭据可能会被忽略。这将消除任何歧义。
关于rest - 无效但可选的凭据的状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32570279/