簡體   English   中英

REST API 用於搜索和過濾的獨立端點

[英]REST API separate endpoint for search and filter

我為一個簡單的市場制作了一個 webapp。 我有三個不同的功能:搜索、過濾、按鍵過濾。 這些函數中的每一個都包含不同的查詢參數。 我的問題是我應該如何以 rest 的方式分離這些端點?

例如,這是我的搜索端點:

API.get('/product/',{params:querydata})

在搜索我得到這些查詢參數:

{
  skip: '0',
  limit: '8',
  searchTerm: '',
  filters: '{"minPrice":1,"maxPrice":250000}'
}

但是,當我使用過濾器 function 時,查詢參數會出現這樣的情況:

{
Color:'Red',
Type:'Car'
}

當我使用 keyfilter function 我會有

{
filters:['red','black','bmw']
}

什么是正確的方法? 在我使用帖子來區分過濾器和搜索之前,但現在我正在嘗試轉換為 rest api。 提前致謝。

我的問題是我應該如何以 rest 的方式分離這些端點?

REST 沒有“端點”。 它有資源資源標識符

什么是正確的方法?

對於所有這些,您應該使用 GET(請求的語義實際上是只讀的),並將您需要的參數嵌入到 URI 的某處 參數應該在 URI 中的哪個位置很大程度上取決於您。

在 web 上,我們通常希望選擇易於支持 web 搜索表單的標識符,這通常意味着將參數描述為鍵值對列表,因此您最終會得到如下內容:

GET /product/?Color=Red&Type=Car

如果您不需要“正常工作”的 web forms,那么對於如何構建資源標識符,您有更多選擇。 您最好的選擇是RFC 6570中描述的那些,因為支持 URI 模板的通用庫已廣泛可用。

從 REST 的角度來看,URI 的實際拼寫並不重要,因此您可以選擇最適合您需要的拼寫。 有取舍; 您可能會發現您當前的框架更喜歡某些拼寫而不是其他拼寫,但是對於操作員閱讀訪問日志或創建從一個資源到另一個資源的相對引用來說,不同的拼寫可能會更好。

很多可能性都很好,只要拼寫與RFC 3986 中描述的生產規則一致,並且您不要嘗試對兩種不同的資源使用相同的標識符。

暫無
暫無

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

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