WSO2 ESB - 从后端通过层时发送不需要的空 JSON 有效负载

WSO2 ESB - sending unwanted empty JSON payload when passing through tier from backend

我是 WSO2 开发的新手,所以这对某些人来说可能是一个简单的修复!

我正在创建一个演示 API 以进一步熟悉 WSO2 开发。我目前坚持将 ESB 中的有效负载从后端(使用 Wiremock 模拟)传递到另一个端点。我可以在 ESB 日志中看到有效负载正在进入 ESB,但它保留为 0 或我认为是空的。

我还有什么要补充的吗?我只是在 switch 语句中放置一个发送中介(检查 HTTP 状态,例如 200)。我玩过 payloadFactory 但它的作用是一样的。

ESB 日志:

TID: [0] [ESB] [2018-03-28 15:56:48,652] DEBUG {org.apache.synapse.transport.http.wire} -  >> "[\r][\n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,652] DEBUG {org.apache.synapse.transport.http.wire} -  >> "{"result": 1}" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,699] DEBUG {org.apache.synapse.transport.http.wire} -  << "HTTP/1.1 200 OK[\r][\n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,700] DEBUG {org.apache.synapse.transport.http.wire} -  << "CorrelationId: 685454f5-e5f6-4837-b0b0-1e9e53798ea9[\r][\n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,700] DEBUG {org.apache.synapse.transport.http.wire} -  << "Content-Type: application/json[\r][\n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,700] DEBUG {org.apache.synapse.transport.http.wire} -  << "Date: Wed, 28 Mar 2018 14:56:48 GMT[\r][\n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,700] DEBUG {org.apache.synapse.transport.http.wire} -  << "Server: WSO2-PassThrough-HTTP[\r][\n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,700] DEBUG {org.apache.synapse.transport.http.wire} -  << "Transfer-Encoding: chunked[\r][\n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,700] DEBUG {org.apache.synapse.transport.http.wire} -  << "Connection: Keep-Alive[\r][\n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,700] DEBUG {org.apache.synapse.transport.http.wire} -  << "[\r][\n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,701] DEBUG {org.apache.synapse.transport.http.wire} -  << "0[\r][\n]" {org.apache.synapse.transport.http.wire}
TID: [0] [ESB] [2018-03-28 15:56:48,701] DEBUG {org.apache.synapse.transport.http.wire} -  << "[\r][\n]" {org.apache.synapse.transport.http.wire}

JSON 从 wiremock 发送到 ESB 的负载:

{"result": 1}

我试过使用 payloadFactory,但无论如何我都得到了相同的结果。如果有帮助,我将包括我使用的 payloadFactory 代码:

<payloadFactory media-type="json">
<format>{"amount": }</format>
<args>
<arg evaluator="json" expression="$.result"/>
</args>
</payloadFactory>
<property name="messageType" value="application/json" scope="axis2"/>
<property name="contentType" value="application/json" scope="axis2"/>

任何解决此问题或尝试的帮助都将不胜感激!

尝试使用 <arg evaluator="Xml" expression="//*[local-name()='result']"/> 而不是 <arg evaluator="json" expression="$.result"/>

最后我解决了这个问题。原来是我的 axis2.xml 属性中的消息构建器之间存在冲突,因此消息从未正确构建。无论如何感谢您的建议!