我正在尝试使用wso2esb 4.7.0 REST API来实现以下用例:
公开REST资源,当您执行GET请求时,它会构建JSON消息并向后端服务发出POST请求,并接收将返回给客户端的JSON响应。
我在构建JSON消息时遇到问题。我正在使用payloadfactory介体来构建我的JSON请求,但我只在后端服务上收到一条空的soap消息。
以下是我正在使用的REST API源配置:
<api xmlns="http://ws.apache.org/ns/synapse" name="test" context="/test">
<resource methods="GET" uri-template="/test">
<inSequence>
<payloadFactory media-type="json">
<format>{"request": "Hello JSON!"}</format>
<args/>
</payloadFactory>
<property name="Content-Type" value="application/json" scope="transport" type="STRING"/>
<send>
<endpoint name="HTTPEndpoint">
<http method="POST" uri-template="http://localhost:8080"/>
</endpoint>
</send>
<log level="full"/>
</inSequence>
<outSequence>
<send/>
</outSequence>
</resource>
</api>
答案 0 :(得分:0)
您必须在发送中介之前设置“messageType”属性,如下所示。
<property name="messageType" value="application/json" scope="axis2"/>
因此,您的配置应更改如下。
<api xmlns="http://ws.apache.org/ns/synapse" name="test" context="/test">
<resource methods="GET" uri-template="/test">
<inSequence>
<payloadFactory media-type="json">
<format>{"request": "Hello JSON!"}</format>
<args/>
</payloadFactory>
<property name="messageType" value="application/json" scope="axis2"/>
<send>
<endpoint name="HTTPEndpoint">
<http method="POST" uri-template="http://localhost:8080"/>
</endpoint>
</send>
<log level="full"/>
</inSequence>
<outSequence>
<send/>
</outSequence>
</resource>
</api>