版本22 R1:契约式API能否支持OR/IN逻辑查询?
Acumatica 22 R1契约式API OR/IN查询问题解答
核心结论
Acumatica 22 R1版本的契约式API不支持OR逻辑运算符和IN语法,错误提示"Only AND logical operator is supported"已经明确了该版本的限制——过滤条件仅允许使用AND连接多个规则。
替代解决方案
针对你需要查询多个OrderNbr的场景,可采用以下几种替代方式:
多次单值查询并合并结果
分别发起多个GET请求,每个请求查询一个订单编号,再在客户端将结果合并:/Default/20.200.001/salesorder?$filter=OrderNbr eq 'SO006538'/Default/20.200.001/salesorder?$filter=OrderNbr eq 'SO006537'使用批量请求减少HTTP调用次数
利用Acumatica的批量请求功能,将多个查询打包到一个请求中,发送至/batch端点,示例请求体:[ { "Id": "1", "Method": "GET", "Url": "/Default/20.200.001/salesorder?$filter=OrderNbr eq 'SO006538'" }, { "Id": "2", "Method": "GET", "Url": "/Default/20.200.001/salesorder?$filter=OrderNbr eq 'SO006537'" } ]响应会包含每个查询的结果,同样在客户端合并即可。
自定义API端点(需开发能力)
如果业务场景需要频繁进行这类多值查询,可开发自定义契约式API端点,在服务器端实现OR逻辑的筛选逻辑,直接返回合并后的结果。
版本说明
Acumatica后续版本(如2023 R1及之后)对契约式API的过滤功能进行了增强,已支持OR运算符和IN语法,但22 R1版本无此特性。
内容的提问来源于stack exchange,提问作者MikeNIke
相关产品推荐
相关产品推荐

