簡體   English   中英

REST服務URI設計

[英]REST service URI design

我正在創建一個RESTful服務,該服務需要返回項的集合,但是還需要允許通過多個索引(位置,公司和類別)進行過濾。 這些過濾器可以單獨應用,也可以組合使用。 在這種情況下,使用在查詢字符串中應用過濾器是有意義的嗎? (類似於/items?company={}&location={}&category={} )是否有更好的方法將過濾器傳遞給資源?

傳遞搜索參數的首選方法是使用查詢字符串(實際上,這就是為什么將其稱為查詢字符串)。 該路徑標識所需的特定資源(項目索引)。 該查詢字符串可以包括例如過濾條件,該過濾條件用於改變資源的表示方式,但是它仍然是相同的資源(項的索引),因此路徑應該相同。

這是REST環境中的首選方法。 可以使用過濾器POST變量,但這會違反REST主體(因為地址應代表資源)。

您是否考慮過使用WCF數據服務 它以符合標准的方式為您提供了很多現成的功能。

在路由表中,您可以執行以下操作:

"items/company/{organizationId?}/{locationId?}/{category?}"

並使您的控制器動作如下所示:

public virtual ActionResult Get(string organizationId, string locationId, string category) {
...
}

在我看來,這比查詢字符串更好,因為它更容易發現。

一個簡單的規則將涵蓋大多數(如果不是全部)良好實踐;

If your filter parameters are optional then they should go to query string, 
if some filters are mandatory you may wanna put them into path. 
Adding optional params to path is not a good idea.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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