2016-01-15 94 views
0

的過濾領域的資源,我們有這些資源:由相關資源

  • 活動
  • 聯賽

事件都有TEAM1和TEAM2領域。

一個團隊有一個聯盟領域。

聯賽有一個user_id字段。

我們希望允許我們的API的用戶能夠過濾用戶的事件。

什麼是一個好的uri結構使用?

1)api/events?userId=<user_id>

2)由於USER_ID字段屬於一個聯賽和聯盟屬於一個團隊(TEAM1或TEAM2):

一個)api/events?team1__league__userId=<user_id>

B)api/events?team2__league__userId=<user_id>

(將匹配team1或team2的user_id)

c)

回答

1

第一個api/events?userId=<user_id>。其他替代方案違反了Information Hiding原則,因爲您正在公開有關數據如何存儲的詳細信息。

+0

謝謝。但問題是它可能與事件的領域相沖突。示例:事件資源可能也有一個user_id字段,但您想按照聯盟的user_id列表進行過濾。你將如何處理這種情況? –

+1

本質上任何聯盟和團隊都屬於一個用戶,那爲什麼不是 'api/events?firstTeamId = '和 'api/events?leagueId = '?您還可以將用戶作爲對象公開,例如'api/users//events'。 – siimsoni

1

看起來你正在嘗試匹配任一隊中的聯盟用戶,因此 「c)api/events?team__league__userId =(將與team1或team2的user_id匹配)」將是要走的路。 可以按照你的建議引入一個製作好的查詢參數。