user-specific 属性是否应该从经过身份验证的 REST API 端点返回?

Should user-specific properties be returned from an authenticated REST API endpoint?

在我的系统中,如果我 GET 一个端点 api/businesses/1,有关企业的详细信息(地址、营业时间等)将返回为 JSON。如果在请求的 header 中传递了访问令牌,则服务器可以识别发出请求的用户,并可以用 user-specific 数据(地址、营业时间、加上是否用户已将此商家加入书签)。

我的问题是 - authenticated/non-authenticated 属性应该像这样从一个请求返回,还是应该分成两个单独的请求? (/api/business/1 用于地址和营业时间,api/user/123/bookmarks 用于用户的书签业务)。后一种方法意味着我可以缓存第一个请求响应,这会很有用。

在这种情况下,最好将其拆分为两种方法

/api/business/1

api/user/123/bookmarks/

这样做的原因:

  • 它使 API 更干净 - 每个 API 方法都完成了定义明确的工作
  • 测试您的 API 更容易,因为您将摆脱此处的状态(我所说的状态是指使用令牌获取用户)。因此,通过传递相同的 business/user id,您可以期望始终获得相同的结果
  • 是的,你可以缓存它