【问题标题】:REST and subcollectionsREST 和子集合
【发布时间】:2017-05-16 22:15:34
【问题描述】:

我有资源集合users,每个用户可以有一个过滤器,所以另一个资源集合是filters

所以,要检索过滤器,我们有这个 url

/users/:id/filters

url应该如何通过id检索过滤器?

  • /users/:id/filters/:id
  • /filters/:id

【问题讨论】:

    标签: rest restful-architecture restful-url


    【解决方案1】:

    过滤器是一等实体还是归用户所有?例如,过滤器是否可以属于两个用户,或者换句话说,过滤器是创建后分配给一个或多个个人的吗? ?

    如果过滤器是用户的属性(一个过滤器对应一个用户,一个用户对应一个或多个过滤器)/users/:id/filters/:id 很有意义。如果过滤器本身是与用户相关的不同对象(每个过滤器一个或多个用户),那么任何一个 API(甚至可能两者)都可能有意义,具体取决于用户预期如何使用 API。如果他们只关心过滤器,/filter/:id 是有意义的,如果他们只关心用户的过滤器 /users/:id/filters/:id 是合适的,或者如果他们的需求在两者之间有所不同,那么两者兼而有之是一个明智的解决方案。

    【讨论】:

    • 用户可以有一个或多个过滤器,它只能属于一个用户。
    • 我认为最常见的情况是,如果不是过滤器,而是产品,那么产品如何?
    【解决方案2】:

    /users/:id/filters/:id 更有意义,因为查询是检索与特定用户对应的特定过滤器。

    【讨论】:

    • 如果我们有 3、4 个级别呢?
    • 对于以上一到两个级别的语法是有意义的。但是对于两个以上,我建议您编写一个静态 URL (/users/getFilters) 并将其余参数作为 JSON 发送
    • 作为JSON,但这是GET,所以您是否建议在body中发送参数以进行GET?
    • 作为正文参数或在 URL 本身中使用查询参数。
    • @Romper - 这能回答你的问题吗?
    【解决方案3】:
    1. 在根目录为所有资源分配一个规范的 URI(例如 /companies/{id}/employees/{id})。
    2. 如果一个资源没有另一个资源就不能存在,它应该被表示为它的子资源

    网址更短,更容易记住,不需要太多参数。

    https://stackoverflow.com/a/19285843/7527624

    https://stackoverflow.com/a/32820784/7527624

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多