簡體   English   中英

WSO2 ESB調用參數化參數化端點循環

[英]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&amp;rettype=abstract&amp;retmode=xml&amp;id={ID}" method="GET">
        </http>
    </endpoint>
</definitions>

這里有相關示例的完整文檔。 在這里找到你如何參數化你的網址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM