我在WSO2 Carbon(5.0)中创建了一个API,我将有效负载发布到:
{
"IdNumber" : "8008185218088",
"LastName" : null
}
然后我调用启动克隆中介序列,该序列将此有效负载转发到两个不同的REST端点。来自端点的json响应是不同的:
端点1响应:
{
"Name" : "Daniel",
"Number" : "12345678"
}
端点2响应:
{
"Name": "Bob",
"Address": "200 Bob Street",
"Code": "123"
}
我想根据上述内容创建的API响应:
{
"Endpoint 1 Response" : {
"Name" : "Daniel",
"Number" : "12345678"
},
"Endpoint 2 Response" : {
"Name": "Bob",
"Address": "200 Bob Street",
"Code": "123"
}
}
我需要配置outSequence
上的哪些调解员才能实现此目的?我如何查询单个json响应字段并将它们组合成客户端的自定义格式化json消息?
我看过聚合调解员,但我不认为这对于格式不同的消息是正确的。
这是我的inSequence供参考:
<resource methods="POST">
<inSequence>
<property name="ROOT" scope="default">
<root:rootelement xmlns:root="www.wso2esb.com"/>
</property>
<log level="full"/>
<clone continueParent="true" id="test" sequential="true">
<target>
<sequence>
<send>
<endpoint>
<address uri="http://192.168.1.1/api/service/person" format="rest"/>
</endpoint>
</send>
</sequence>
</target>
<target>
<sequence>
<send>
<endpoint>
<address uri="http://192.168.1.1/api2/query" format="rest"/>
</endpoint>
</send>
</sequence>
</target>
</clone>
</inSequence>
答案 0 :(得分:2)
您将无法汇总此类邮件。解决方案是使用'call'介体,将第一个响应(或值)存储在属性中,然后调用第二个服务。
这样的事情:
<call>
<endpoint>
<address uri="http://192.168.1.1/api/service/person" format="rest"/>
</endpoint>
</call>
<property name="Name1" expression="//Name" />
<property name="Number1" expression="//Number" />
<send>
<endpoint>
<address uri="http://192.168.1.1/api2/query" format="rest"/>
</endpoint>
</send>
<outSequence>
-- build message using payloadfactory
</outSequence>
您可以在outSequence中使用payloadFactory来构建响应消息。