【问题标题】:Is leaving out the current user ID in a REST endpoint bad practice?在 REST 端点中遗漏当前用户 ID 是不好的做法吗?
【发布时间】:2016-03-28 07:02:19
【问题描述】:

我目前正在编写自己的 REST API。我的一个端点被命名为/api/profile,它需要GET 来检索或PUT 来更新这个配置文件。有人告诉我,在调用PUT /api/profile 时,在 URL 中不包含任何形式的用户 ID、电子邮件或用户名被认为是不好的做法或完全错误。每个请求都有一个用于身份验证的 Bearer 令牌,这使得服务器加载用户以防万一,并将其​​存储在请求数据中。在使用 PUT 更新信息时,我认为如果没有向 URL 提供任何参数,则目标是self,在这种情况下,是经过身份验证的用户。

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

【问题讨论】:

  • Ruben,因为您知道资源的位置,在本例中是配置文件,您正在通过身份验证获得没有 id 的 PUT。

标签: rest


【解决方案1】:

REST 的架构约束之一是使您的资源可缓存。

当您的客户端和服务器之间有一些代理或其他缓存时,无法缓存请求行GET /api/profile,否则其他用户可能会检索到错误的配置文件。

您可以在您的情况下使用Vary: Authorization 标头来防止这种情况。但是在 URL 中有一个 id 将明确地表明您要检索哪个资源。

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

【讨论】:

  • 感谢您的意见
猜你喜欢
  • 2019-10-27
  • 1970-01-01
  • 2014-03-24
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2020-09-08
  • 2014-04-14
  • 1970-01-01
相关资源
最近更新 更多