[英]REST Get items not in collection
介紹
假設我有一個返回項目的休息服務:
GET /items
GET /items/7
POST /items
etc.
我們也有幾組物品:
GET /groups
GET /groups/16
POST /groups
etc.
然后,我們可以將項目歸入特定的組:
/items?groupid=16
這一切都非常簡單。
題
現在我們有了一種獲取特定組中項目的方法,是否還應該提供一種獲取不在特定組中項目的方法? 為什么? 因為如果客戶要將項目添加到組中,則它必須知道尚未添加哪些項目。
我看到兩個選擇:
廣告1。
我們可以提供一種查詢/搜索數據的方法,如下所示:
/items?groupid=!16
or
/items?q=groupid<>16
我感覺這導致搜索查詢的功能請求源源不斷。
廣告2。
客戶可以先獲得所有物品。 接下來,客戶可以獲取組16中的所有項目。對這兩個集合進行比較將得出不在組16中的項目。
這樣,客戶端必須做更多的編碼,並處理集合,將其保存在內存中等。另一方面,它不需要學習特定的查詢語法。
是否有關於此主題的最佳實踐?
首先,我將使用其他URL來獲取組中的項目:
GET /groups/16/items
這將返回組16中所有項目的收集資源。要向組中添加項目,
POST /groups/16/items
可用於。
將項目添加到組中將具有相同的結果,無論該項目是否已在組中。 在這兩種情況下,客戶都只在乎結果:他希望項目在組中。 如果已經存在,那么,如果不是,那么現在。
因此,我看不到任何用於獲取不在組中的項目的用例。
也許允許客戶將新項目過帳到所需組中可能是一種方法。
無論如何,在驗證期間您都需要,您可以接受不存在的項目,也可以拒絕它,因為它已經存在。
建立在@Tichodroma的URL上,您可能擁有:
GET / groups / 16 / non-items
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.