[英]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.