0

假设我有一个带有团队和玩家的 RESTful api,多对多关系。

我可以通过以下方式获得特定球队的球员:

GET /api/team/{team_id}/players

我想做一些更复杂的查询,但我不知道哪个是 uri 设计的最佳实践。

具体来说,我想:

  1. 获取不属于任何团队的玩家。
  2. 获取不属于特定团队的球员。

最好的方法是什么?

4

2 回答 2

1

如果球队和球员有多对多的关系,我个人不会使用这种 uri 设计。如果一名球员可以为多支球队效力,那么你最终会得到不是唯一的球员 uri。例如,假设某个特定球员同时为第 5 队和第 6 队效力,他们可能由以下两个 uri 表示(假设球队和球员都有数字 id)

/api/team/5/players/4
/api/team/6/players/4

相反,我会稍微移动一下,你可以用这个 uri 代表玩家:

/api/players/4

每个团队都有这些 uris(为了一致性而复数)

/api/teams/5
/api/teams/6

然后你可以像这样搜索团队成员

/api/players?team=5

NOT IN 查询可以解释,但您可以使用类似于 django 模型过滤器的工作方式并沿这些行引入后缀查询参数:

/api/players?team_ne=5

对于不属于任何球队的球员,你有几个选择

/api/players?team=
/api/players?team=none

也许其中的第二个不那么模棱两可

于 2013-03-07T21:54:56.243 回答
0

路由语法如

/api/team/{team_id}/players

始终需要定义的 team_id。

使用 GET 参数来过滤这个属性。

于 2013-03-07T20:06:35.070 回答