WSO2 API配置outSequence修改返回报文后返回202无响应体求助
问题根因
返回202无响应体由配置中的3处错误导致:
- 配置嵌套了key为空的
<sequence>标签,WSO2无法匹配到对应执行序列,导致响应处理逻辑中断,默认返回202 Accepted状态码且无响应内容 - 当前在处理正常响应的
outSequence中调用了ERROR_CODE、ERROR_MESSAGE等仅在错误处理序列faultSequence中才会被填充的属性,正常请求下这些属性为空,会导致payload生成异常 - 未显式指定响应的HTTP状态码,处理逻辑异常时WSO2默认返回202状态码
修正方案
场景1:自定义错误请求的返回内容
把对应逻辑迁移到faultSequence,修正后的配置如下:
<faultSequence> <payloadFactory media-type="json"> <format> { "status": "1", "message": $1 } </format> <args> <arg evaluator="xml" expression="get-property('ERROR_MESSAGE')"/> </args> </payloadFactory> <property name="messageType" scope="axis2" type="STRING" value="application/json"/> <property name="HTTP_SC" scope="axis2" type="STRING" value="200"/> <send/> </faultSequence>
场景2:修改正常成功请求的返回内容
按实际原响应的结构调整取值逻辑,示例如下(假设原响应json中包含msg字段):
<outSequence> <payloadFactory media-type="json"> <format> { "status": "1", "message": $1 } </format> <args> <arg evaluator="json" expression="$.msg"/> </args> </payloadFactory> <property name="messageType" scope="axis2" type="STRING" value="application/json"/> <property name="HTTP_SC" scope="axis2" type="STRING" value="200"/> <send/> </outSequence>
验证步骤
- 配置修改完成后重新部署API生效
- 调用接口确认返回状态码和响应体符合预期,若仍有异常可开启WSO2序列执行日志,排查属性取值是否符合预期
内容的提问来源于stack exchange,提问作者Pietro Ricciardi
相关产品推荐
相关产品推荐

