簡體   English   中英

在 REST api 中過濾

[英]Filtering within REST api

我們目前正在構建 RESTful API。 現在,問題是處理過濾的最佳方法是什么。

我們有/products /products返回您有權訪問的所有給定產品。 現在,假設您想要description與“無描述”完全匹配的產品。 你會得到/products?description=No+description

現在,理想情況下我們會有更多的過濾器選項。 僅顯示庫存大於或等於 1 但小於 10 的產品。僅顯示名稱以black結尾或以white開頭的產品。 這樣做的最佳做法是什么? 我們會在 URL 中使用邏輯運算符,我們將如何轉義通配符?

目前的情況是:

/products?product_name=%25black將查找名稱以黑色結尾的所有產品。

或者

/products?product_name=white%25將查找名稱以白色開頭的所有產品。

25%是的編碼形式% 到現在為止還挺好。

但是,如果有人想找到名稱與文字%字符匹配的產品怎么辦? 或者想找有庫存的產品? 最好能介紹一下

min_stockmax_stock ,或者是否有可能(或者我們甚至想要?)使用邏輯運算符( ?stock=>=1&stock=<=5 )。 是否有處理 URL 或此類情況的標准?

我們是不是想多了? 是否可以? 難道我們不應該過濾我們的目的,而是讓用戶自己弄清楚嗎?

REST 范式是關於資源(您訪問的只是資源)和人類可理解性。 這就是您將列表網址設為復數的原因。

話雖如此,我確實認為,如果您想以兩種不同的方式進行過濾(使用=like ,正則表達式...),您有兩種可能性:

  • 首先創建三個不同的過濾器product_name_exactproduct_name_likeproduct_name_regex 看起來像python.django的過濾方式,非常優雅;
  • 第二種方式:創建一個query字段,然后創建一個query_mode這是 bing api 的工作方式。

暫無
暫無

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

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