REST 和子集合
REST and subcollections
我有资源集合 users 并且每个用户可以有一个过滤器,所以另一个资源集合是 filters.
所以,为了检索过滤器,我们有这个 url
/users/:id/filters
应该如何url通过 id 检索过滤器?
- /用户/:id/filters/:id
- /过滤器/:id
/users/:id/filters/:id 更有意义,因为查询是检索与特定用户对应的特定过滤器。
过滤器是 first-class 实体还是由用户拥有? 例如,一个过滤器可以属于两个用户还是换一种方式,是一个创建过滤器然后分配给一个或多个人?
如果过滤器是用户的属性(一个过滤器对应一个用户,一个用户对应一个或多个过滤器)/users/:id/filters/:id很有意义。如果过滤器本身是与用户相关的不同对象(每个过滤器一个或多个用户),那么 API(甚至可能两者)都可能有意义,具体取决于用户预期如何使用 API .如果他们只关心过滤器,/filter/:id 是有意义的,如果他们只关心用户的过滤器 /users/:id/filters/:id 是合适的,或者如果他们的需求在两者之间有所不同,那么两者都是明智的解决方案。
- 为所有资源分配根目录下的规范 URI(例如
/companies/{id}
和 /employees/{id}
)。
- 如果一个资源离不开另一个资源,它应该被表示为它的子资源
URL 更短,更容易记住,并且需要的参数不多。
我有资源集合 users 并且每个用户可以有一个过滤器,所以另一个资源集合是 filters.
所以,为了检索过滤器,我们有这个 url
/users/:id/filters
应该如何url通过 id 检索过滤器?
- /用户/:id/filters/:id
- /过滤器/:id
/users/:id/filters/:id 更有意义,因为查询是检索与特定用户对应的特定过滤器。
过滤器是 first-class 实体还是由用户拥有? 例如,一个过滤器可以属于两个用户还是换一种方式,是一个创建过滤器然后分配给一个或多个人?
如果过滤器是用户的属性(一个过滤器对应一个用户,一个用户对应一个或多个过滤器)/users/:id/filters/:id很有意义。如果过滤器本身是与用户相关的不同对象(每个过滤器一个或多个用户),那么 API(甚至可能两者)都可能有意义,具体取决于用户预期如何使用 API .如果他们只关心过滤器,/filter/:id 是有意义的,如果他们只关心用户的过滤器 /users/:id/filters/:id 是合适的,或者如果他们的需求在两者之间有所不同,那么两者都是明智的解决方案。
- 为所有资源分配根目录下的规范 URI(例如
/companies/{id}
和/employees/{id}
)。 - 如果一个资源离不开另一个资源,它应该被表示为它的子资源
URL 更短,更容易记住,并且需要的参数不多。