簡體   English   中英

REST獲取不在集合中的項目

[英]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. 我們提供了一些查詢數據的方法
  2. 什么也不要做,讓客戶處理。

廣告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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM