2015-02-23 34 views
4

我發展我的REST API的搜索功能,目前的URI的結構爲:REST - 獲取資源的特定屬性的集合只

api/items?type=egg,potato 

假設每個項目的資源有4個屬性:

ID,名稱,類型,等級

什麼是設計我的URI和返回每個資源屬性的子集的最寧靜的方式,例如只有這些資源的名稱?

-

我之所以問這個是我經常要少重型結果集。例如,我可以使用動態填充的名稱構建AJAX搜索作爲下拉菜單 - 但我不希望每個請求都會返回過多的膨脹。

回答

2

REST實際上並不是一套堅如磐石的標準,但有一些很好的做法。

在這種特殊情況下,我會建議利用現有資源領域的查詢參數你現在的樣子,要選擇具有的eggpotatotype價值的物品。但要僅選擇一個子集,可以引入一個field查詢參數。因此,您可以調用您的API,如api/items?type=egg&fields=name,以僅獲得egg類型的所有資源的name字段。

P.S 這不是我的發明,我已經在其他API中看到過這個,在某個地方叫select。據我所知,Facebook在其API中有這個功能。

+0

謝謝,看起來像一個很好的方法來做到這一點。我想知道 - 是否有意義不包含ID? (即我應該總是強制它作爲一個領域?) – Titus 2015-02-23 19:03:55

+0

我想這實際上取決於你的用例和ID的含義。如果客戶希望儘快再次引用該資源,我會始終包含該ID。如果沒有,比你不需要。 – 2015-02-23 19:06:32