我的一位聪明的同事朋友向我提出一个问题,即我不确定如何回答,我想把它呈现给全世界。
如果RESTful端点使用基于令牌的身份验证,则需要一个基于时间的令牌来访问资源,并且该令牌在一定时间后过期,这会违反RESTful原则吗?换句话说,如果相同的URL在一段时间后过期,那么资源会根据请求返回不同的响应,是否会破坏REST?
答案 0 :(得分:3)
不,你的情景没有打破任何我能想到的宁静原则。您似乎混淆了返回不同资源的请求和获得不同响应的请求。
在您的方案中,我希望在令牌过期后服务器将返回401并且客户端将启动某种身份验证交换以重新验证用户。
一旦重新验证,服务器应该返回预期的资源。
在许多情况下,请求可能会有完全不同的响应。 403 Forbidden,410 Gone就是例子。
答案 1 :(得分:1)
URL的用户/应用程序访问权限可能会过期,但这并不意味着URL过期。在大型真实世界系统中,API的auth部分可能由不同产品处理,保护真实API免受攻击,未经授权的用户等。因此RESTful API仍然遵循其他原则。
答案 2 :(得分:1)
您的设计没有违反REST约束,但您必须小心正确使用HTTP。如果您的资源仅供某个用户查看,则应使用HTTP身份验证对该用户进行身份验证。这将告诉公共缓存不要缓存资源的表示(否则他们通常会这样)。
因此,即使您希望URL仅由某个用户知道,也要确保您还让该用户使用正确的HTTP头进行身份验证。
扬
答案 3 :(得分:0)
资源会经常根据请求的时间给出不同的响应。当实际资源随时间变化时会发生这种情况。在一周内请求此页面的资源(例如)可能会给出不同的响应,而不是在您第一次阅读时这样做。