繁体   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