2013-03-07 34 views
0

假設我有一個RESTful api與團隊和玩家,多對多的關係。REST:如何管理「不在」查詢

我可以從一個特定的團隊球員:

GET /api/team/{team_id}/players 

我想作一些更復雜的querys,但我不知道這是URI設計的最佳實踐。

具體來說,我想:不屬於任何團隊的一部分

  1. 讓玩家。
  2. 獲得不屬於特定團隊的球員。

這樣做的最佳方法是什麼?像

/api/team/{team_id}/players 

回答

1

如果團隊和球員有多對多的關係,我個人不會使用這個uri設計。如果一名球員可以參加多支球隊比賽,那麼你最終會得到不唯一的球員球員。例如說,一個特定的播放器播放兩個隊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 

不能在查詢第解釋是開放的,但你可以如此的相似模型過濾器如何Django的工作的東西,沿着這些線路推出後綴查詢參數:

/api/players?team_ne=5 

玩家沒有任何一支球隊,你有幾種選擇

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

也許那些二是更加明確

0

路由語法要求定義八方TEAM_ID。

使用GET參數過濾此屬性。