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,您可以期望始终获得相同的结果
- 是的,你可以缓存它
在我的系统中,如果我 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,您可以期望始终获得相同的结果
- 是的,你可以缓存它