向WSO2 DSS传递limit和offset参数时遇INCOMPATIBLE_PARAMETERS_ERROR
排查INCOMPATIBLE_PARAMETERS_ERROR错误的解决方案
1. 修正DSS资源路径配置
DSS的Resource路径无需包含查询参数(?offset={offset}&limit={limit}),只需定义基础路径,查询参数通过with-param绑定即可。错误的路径写法会导致参数解析异常,修改后的Resource配置如下:
<resource method="GET" path="permission-categories"> <call-query href="getPermissionCategories"> <with-param name="offset" query-param="offset" /> <with-param name="limit" query-param="limit" /> </call-query> </resource>
2. 确保参数类型匹配与非空
DSS的查询参数要求为INTEGER类型,需保证Micro Integrator传递的参数符合类型要求:
- 在MI调用前添加参数类型转换与默认值处理,避免空值或字符串类型传入:
<property expression="get-property('query.param.offset') ?: 0" name="uri.var.offset" type="INTEGER"/> <property expression="get-property('query.param.limit') ?: 10" name="uri.var.limit" type="INTEGER"/>
- 更新MI的Endpoint配置,使用转换后的参数:
<call> <endpoint> <http method="GET" uri-template="https://{uri.var.integratorHost}:{uri.var.integratorServicePort}/services/test-dataservice-v2/permission-categories?offset={uri.var.offset}&limit={uri.var.limit}"/> </endpoint> </call>
3. 调整DSS查询参数的可选性(可选)
若业务允许参数可选,可修改DSS的Query配置,设置参数可选并添加默认值,避免因参数缺失触发错误:
<query id="getPermissionCategories" useConfig="usage-profile-datasource"> <sql>SELECT * FROM permission_category limit COALESCE(:limit, 10) offset COALESCE(:offset, 0)</sql> <param name="limit" optional="true" sqlType="INTEGER" defaultValue="10"/> <param name="offset" optional="true" sqlType="INTEGER" defaultValue="0"/> <result outputType="json"> {"outpust-result":{"Resources":[{"id": "$id","permissionCategory":"$permission_category"}]}} </result> </query>
4. 验证服务端点可达性
确认Micro Integrator能正常访问DSS服务的端点URL,检查主机、端口、服务名称是否配置正确,避免因网络或地址错误导致参数传递失败。
内容的提问来源于stack exchange,提问作者prime
相关产品推荐
相关产品推荐

