【发布时间】:2016-05-27 05:00:16
【问题描述】:
我试图找出映射我在 REST API 上的几个用例的最佳方式。 我有 2 个资源/实体:用户和组织
一个组织包含多个用户(一对多关系)。
我有 2 个不同的用例:
- 检索没有任何用户的所有组织的列表(在这种情况下不需要用户数据)
- 检索所有组织及其所有关联用户的列表
所以我将第一个映射到GET /api/Organization
在 REST 标准中映射第二个的通用好方法是什么? 我需要在一个请求中获取所有内容,不能发送新请求来获取每个组织的用户列表,因为性能方面会很糟糕。
我想到了 3 种不同的可能性:
1) 类似的东西:GET /api/Organization/customlist/with-users
我真的不喜欢这个,因为它不是真正的 REST 标准,并且会与子资源混淆。
2) 为此使用查询参数:GET /api/Organization?getusers=true
这更简洁,但我也不太喜欢它,因为我更喜欢保留查询参数以仅用于过滤、分页和排序目的。
3) 在 GET 正文中使用 JSON 对象并在两个用例中使用 GET /api/Organization
然后根据 JSON 对象的内容,我会知道是否应该获取用户列表。我实际上最喜欢这种方法,因为它允许我对两个请求使用相同的路径,但我知道普遍的共识似乎是在 GET 请求上使用正文是一种不好的做法,尽管最近这似乎有使用这种方法在 ElasticSearch 等一些流行项目中变得更加普遍。
是否有处理类似案件的标准化方式?我可能错过的任何其他方式?当然,我可以让它与其中任何一个一起使用,但我试图了解对于我认为应该是常见场景的事情的最佳实践。
【问题讨论】: