[英]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_stock
和max_stock
,或者是否有可能(或者我們甚至想要?)使用邏輯運算符( ?stock=>=1&stock=<=5
)。 是否有處理 URL 或此類情況的標准?
我們是不是想多了? 是否可以? 難道我們不應該過濾我們的目的,而是讓用戶自己弄清楚嗎?
REST 范式是關於資源(您訪問的只是資源)和人類可理解性。 這就是您將列表網址設為復數的原因。
話雖如此,我確實認為,如果您想以兩種不同的方式進行過濾(使用=
, like
,正則表達式...),您有兩種可能性:
product_name_exact
, product_name_like
, product_name_regex
。 看起來像python.django的過濾方式,非常優雅;query
字段,然后創建一個query_mode
這是 bing api 的工作方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.