REST 和子集合

REST and subcollections

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

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

/users/:id/filters

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

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

过滤器是 first-class 实体还是由用户拥有? 例如,一个过滤器可以属于两个用户还是换一种方式,是一个创建过滤器然后分配给一个或多个人?

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

  1. 为所有资源分配根目录下的规范 URI(例如 /companies/{id}/employees/{id})。
  2. 如果一个资源离不开另一个资源,它应该被表示为它的子资源

URL 更短,更容易记住,并且需要的参数不多。