我们正在设计一个RESTful后端服务,它以两种模式列出消息:已验证和未验证。如果请求经过身份验证(即,它包含field.act()
标头),则应显示私人和公共消息。如果请求未经身份验证,则只应显示公共消息。
处理包含field.act()
标头但是凭据过期的请求的RESTful方法是什么?
我倾向于401,但这对前端来说有点混乱,因为它表明需要凭证,而在我们的例子中它们是可选的。是否有某种已知的REST实践用于"失败的可选身份验证"?
答案 0 :(得分:3)
如果呼叫者想要获取私人消息,您可以要求不同的URL。对于给定的URL,REST响应通常应该是相同的,因为该假设将简化许多事情,例如此身份验证问题。这样的事情会起作用:
/messages?private=true # requires auth
/messages # doesn't require auth
现在,如果private=true
和凭据无效/过期,您可以返回401,而如果private为false /省略,则可以忽略凭据。这将消除任何歧义。