REST API设计经过身份验证的用户:/ products或/ <userid> / products

时间:2019-03-18 23:35:44

标签: rest api

我正在构建一个以VueJS为前端的Web应用程序,并通过JWT对用户进行API身份验证。

如果我希望API仅显示用户产品(已过滤),则路由应为:

/ api /产品

和后端进行过滤 或

/ api / userid / products

并限制访问其他用户的产品

2 个答案:

答案 0 :(得分:0)

您将获得JWT的user_id,因此对于我们来说,我们仅在软件中使用/api/products。我们避免使用多个数据源,因为这会造成混乱,并且JWT中的任何内容都经过了身份验证,因此我们可以相信。

如果我想允许用户查看其他用户的产品,则可以将/api/products/search?user_id=XXX用于灵活的搜索系统,该系统可以扩展为根据其他条件搜索产品。

答案 1 :(得分:0)

我发现最好使用户ID成为uri的一部分。最终,这是主观的,但具有一些优点:

  1. 很明显,在这种情况下,产品列表是用户的下属。毫无疑问,如果它看起来像是子资源,那就是“整个列表”。
  2. 它将为将来敞开大门,使用户可以访问其他用户的产品列表。
  3. 我喜欢为API中的每个实体提供完全唯一的URI的想法。对我来说,您的示例中的每个用户都有一个个人产品列表,每个产品列表都是唯一的资源。