在 REST API 中,经过身份验证后,用户会收到一个 AccessToken,然后随每个请求一起发送。在服务器端,令牌映射到该用户的 UserID。
假设我这样处理消息资源:
GET /user/123/messages
与以这种方式访问它:
GET /messages/
并从 AccessToken 标头中提取 UserID。
哪种方式更 RESTful?我倾向于第一个 - 它似乎更具可读性和可缓存性,但还有其他原因吗?
第一个标识一个唯一的资源,第二个没有。如果第二个 URI 的含义取决于附加信息(会话令牌),则它不会识别任何内容。所以只有第一种方法是 RESTful。
如果用户 456 让你第一次得到......你会返回什么?如果你的第二个......?我发现我的世界是“宁静的”,我的服务对每个用户都是幂等的。一旦身份验证发生,我将用户身份放入 http 会话(tomcat 免费为我提供)并使用 /messages 和 /messages/99999 等服务。服务实现然后说“在会话中查找用户拥有的消息 XXXX。重要的部分是不要将其余数据存储在会话中只是用户是谁。比 cookie 容易得多......恕我直言