如何在Web URL中传递赋值运算符作为参数实现API过滤查询
解决API过滤ImageAge>40天实例的问题
你直接在URL里用>符号做过滤肯定行不通——一来浏览器或HTTP客户端会把它当成特殊字符处理,二来绝大多数API都不会直接识别这种格式。下面是几种行业内通用的可行方案,你可以根据目标API的设计尝试:
用
filter参数封装过滤规则
很多API会提供统一的filter参数来接收过滤条件,你可以把ImageAge>40作为参数值传递,但要记得对>做URL编码(编码后是%3E),最终URL类似这样:https://randomurl.com/v1/instances?filter=ImageAge%3E40有些API也支持更清晰的语法,比如
filter=ImageAge:gt:40,具体要看API的约定。使用带比较后缀的参数命名
不少基于框架的REST API(比如Django REST Framework构建的)会用双下划线加比较符的方式表示条件,比如__gt代表“大于”。这种情况下直接传参数就行:https://randomurl.com/v1/instances?ImageAge__gt=40类似的还有
__gte(大于等于)、__lt(小于)等,这种格式不用处理特殊字符,用起来很直观。使用范围类参数
如果API支持按范围过滤,可能会提供ImageAgeMin这类参数,直接传入41(如果API的“大于”不包含边界值的话)或者40:https://randomurl.com/v1/instances?ImageAgeMin=41这种方式完全没有特殊字符,兼容性最好。
最后提一句:最靠谱的还是去查目标API的官方文档,里面一定会明确说明过滤参数的格式规范。如果找不到文档,上面几种是最常用的方案,可以逐个试一下。
内容的提问来源于stack exchange,提问作者sandeep
相关产品推荐
相关产品推荐

