如何正确构造OData $filter请求?解决Swagger-UI查询报错问题
正确格式化OData $filter请求的方法
核心语法规则
OData的$filter参数有严格的语法要求,针对Id(数值型)和Name(字符串型)的过滤,正确写法如下:
1. 单字段过滤示例
- 数值类型(如Id):直接用比较运算符
eq(等于),无需引号GET /api/目标实体名?$filter=Id eq 1001 - 字符串类型(如Name):必须用单引号包裹字符串值
GET /api/目标实体名?$filter=Name eq '测试名称'
2. 多字段组合过滤示例
同时用Id和Name过滤时,用小写的逻辑关键字(and/or)连接条件:
- 同时满足两个条件(逻辑与):
GET /api/目标实体名?$filter=Id eq 1001 and Name eq '测试名称' - 满足任一条件(逻辑或):
GET /api/目标实体名?$filter=Id eq 1001 or Name eq '测试名称'
3. 常见错误规避
- 字符串值未加单引号:比如
Name eq 测试名称会直接触发语法错误 - 关键字大小写错误:OData要求
and/or/eq等关键字必须小写,不能写成AND/OR/EQ - 误用普通运算符:不能用
=代替eq,OData有专属的比较运算符(eq等于、ne不等于、gt大于等)
Swagger-UI使用提示
在Swagger-UI的参数输入框中,直接填写$filter的条件内容即可,无需额外添加?前缀,例如输入:Id eq 1001 and Name eq '测试名称'
内容的提问来源于stack exchange,提问作者Mustapha Rachidi
相关产品推荐
相关产品推荐

