我创建了一个代理服务,它使用xslt介体转换消息,然后转换为JSON, 我现在想要在休息网络服务中发布JSON消息,我怎么能直接在我的代理服务中做到这一点? 这是我的代理服务:
<proxy xmlns="http://ws.apache.org/ns/synapse" name="CategoryProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
<target>
<inSequence>
<property name="Authorization" expression="fn:concat('Basic ', base64Encode('admin:admin'))" scope="transport" type="STRING"/>
<send>
<endpoint>
<address uri="http://localhost:8068/database/library.author/301"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<xslt key="conf:/ressources/catXsl.xsl"/>
<property name="messageType" value="application/json" scope="axis2" type="STRING"/>
<send/>
</outSequence>
<faultSequence/>
</target>
<description></description>
</proxy>
我希望此代理发送的邮件在其余的网络资源中发布,我如何在我的代理中执行此操作?
答案 0 :(得分:0)
看起来您正在寻找服务链,您可以通过两种方式实现这一目标:
1)使用接收序列
<inSequence>
<property name="Authorization" expression="fn:concat('Basic ', base64Encode('admin:admin'))" scope="transport" type="STRING"/>
<send receive="receivingSeqForChaining">
<endpoint>
<address uri="http://localhost:8068/database/library.author/301"/>
</endpoint>
</send>
</inSequence>
您可以在接收序列中定义所需的任何操作序列。此输出将分发给接收序列。如果您不想在outSequence中针对此案例执行任何特定操作,则只需添加一个。
2)使用outSequence触发其他服务调用
您也可以直接从outSequence进行http调用:
<outSequence>
<send>
<endpoint>
<http method="get"
uri-template="https://www.abc.com/resource/foo"/>
</endpoint>
</send>
</outSequence>
希望这有帮助。