0

多対多の関係であるチームとプレイヤーを含む RESTful API があるとします。

次の方法で、特定のチームのプレーヤーを取得できます。

GET /api/team/{team_id}/players

もっと複雑なクエリをいくつか作成したいのですが、URI 設計のベスト プラクティスがどれかわかりません。

具体的には、次のことを行います。

  1. どのチームにも所属していない選手を取得します。
  2. 特定のチームに所属していない選手を取得します。

これに最適なアプローチは何ですか?

4

2 に答える 2

1

チームとプレイヤーが多対多の関係にある場合、個人的にはこの URI デザインを使用しません。プレーヤーが複数のチームでプレーできる場合、一意ではないプレーヤー uris になります。たとえば、特定のプレーヤーがチーム 5 とチーム 6 の両方でプレーしている場合、次の両方の URI で表すことができます (チームとプレーヤーの両方に数値 ID があると仮定します)。

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

代わりに、この uri でプレーヤーを表すことができます。

/api/players/4

そして、これらの URI を持つ各チーム (一貫性のために複数化されています)

/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

おそらく、それらの2番目はそれほどあいまいではありません

于 2013-03-07T21:54:56.243 に答える
0

次のようなルート構文

/api/team/{team_id}/players

定義された team_id が常に必要です。

このプロパティでフィルタリングするには、GET パラメータを使用します。

于 2013-03-07T20:06:35.070 に答える