我有一個名爲Entity
的集合,每個實體都有一個名爲groups的屬性。RESTful路由設計
{
_id: xxx,
groups: [g1, g2, g3],
others...
}
一個實體至多有幾個組。這些團體不會改變很多,我不會將其存儲在單獨的集合中。一組數組對象如下所示:
g1 = {
group_id: xxx,
name: xxx
}
另外我有一個User
集合。每個用戶都屬於1個實體和1個組。所以基本上我們有一個名爲user.entity
和user.group
的屬性,它引用上面剛好1個實體文檔。
當用戶想要獲得實體信息時,他可以做GET /entity/123
。這很容易。實體組織呢?可能的選擇是
GET /entity/123/group
或GET /group
。
方法1很簡單。您已經告訴人們您希望獲得實體123
中的羣組。因此,您可以設置中間件以將123
轉換爲req.entity
,並直接返回entity.groups
。但對於管理員,他可能想要查詢所有實體中的所有組,並且此API看起來不正確?
爲什麼方法2也可以的原因是因爲我得到req.user
後,我可以檢查req.user.entity
,查詢實體123
並返回組。但我覺得我必須進行額外的條件檢查才能獲得團隊。同樣,如果管理員想要查詢所有組,我們只需要用不同的條件查詢,並且查詢條件可能很雜亂/
那麼這裏的更好的設計是什麼?有沒有比另一個更加RESTful的? (順便說一下1個用戶都只有1組和1個實體和user.entity
永遠不會改變。)
來嵌套你的url,2個用例是這樣的。我的想法是有一天有人切換實體,或者每個人都屬於兩個實體,那麼簡單GET /組就很難。不知道是否需要考慮到這一點。 –