[英]WSO2 ESB calling parameterized endpoint Looping on Parameters
在我的用例中,我必須鏈接兩個服務調用。 特別是:
1)第一個調用返回一個列出多個ID的xml
2)我必須遍歷返回的ID列表並為每個id-item進行ID參數化服務調用。
3)最后,我必須收集由每個ID-service-response組成的完整響應。
假設第一個服務調用返回如下響應:
<result>
<Link>
<Id>93451</Id>
</Link>
<Link>
<Id>93450</Id>
</Link>
...
第二步是執行一系列調用參數化端點,如下所示:
http://myEndpoint/entry/eutils/efetch.fcgi?db=pubmed&rettype=abstract&retmode=xml&id=<ID>
每個調用返回一個xml響應,如下所示:
<response>
<field1>value1</field1>
<field2>value2</field2>
<field3>value3</field3>
<response>
我必須收集像這樣的完整回復:
<finalResponse>
<response>
<field1>value1</field1>
<field2>value2</field2>
<field3>value3</field3>
<response>
<response>
<field1>value1</field1>
<field2>value2</field2>
<field3>value3</field3>
<response>
<response>
<field1>value1</field1>
<field2>value2</field2>
<field3>value3</field3>
<response>
</finalResponse>
我能怎么做? 你能舉個例子嗎? 謝謝
您需要組合使用迭代介體和聚合介體。 下面是一個示例代碼,但您可能需要進行一些修改才能使其適合您的要求。
<definitions xmlns="http://ws.apache.org/ns/synapse">
<proxy name="SampleProxy">
<target>
<inSequence>
<iterate expression="//result/link/id" preservePayload="true"
attachPath="//link">
<target>
<property name="uri.var.servicepath" expression="//link/id/text()"/>
<sequence>
<send>
<endpoint key="MyEndpoint"/>
</send>
</sequence>
</target>
</iterate>
</inSequence>
<outSequence>
<property name="FinalResponse" scope="default">
<finalResponse />
</property>
<aggregate>
<onComplete expression="//response"
enclosingElementProperty="FinalResponse">
<send/>
</onComplete>
</aggregate>
</outSequence>
</target>
</proxy>
<endpoint xmlns="http://ws.apache.org/ns/synapse" name="MyEndpoint">
<http uri-template="http://myEndpoint/entry/eutils/efetch.fcgi?db=pubmed&rettype=abstract&retmode=xml&id={ID}" method="GET">
</http>
</endpoint>
</definitions>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.