是否在REST端点中忽略了当前用户ID的不良做法?

时间:2016-03-27 22:49:25

标签: rest

我目前正在编写自己的REST API。我的一个端点名为/api/profile,要么GET要检索,要么PUT更新此配置文件。我被告知,在调用PUT /api/profile时,在网址中不包含任何形式的用户ID,电子邮件或用户名,这被视为不良做法或明显错误。每个请求都有一个用于身份验证的承载令牌,这使得服务器加载用户并将其存储在请求数据中。在使用PUT更新信息后,我认为可以安全地假设,如果没有为URL提供参数,则目标是self,在这种情况下,是经过身份验证的用户。

我做错了这个假设和/或这是REST的坏例子吗?

1 个答案:

答案 0 :(得分:2)

REST的架构限制之一是使您的资源可缓存。

如果客户端和服务器之间有某个代理或其他缓存,则无法缓存请求行GET /api/profile,或者其他用户可能会检索错误的配置文件。

您可以在案例中使用Vary: Authorization标头来阻止此情况。但是在URL中使用id将明确地清楚要检索哪个资源。

对于PUT请求,这不是问题,因为它们不会被缓存,但您应该保持URI设计的一致性。