Wso2 esb:编辑一个rest API的响应并将该响应发送给另一个rest API

Wso2 esb:编辑一个rest API的响应并将该响应发送给另一个rest API,wso2,wso2esb,Wso2,Wso2esb,我们有2个rest API,必须编辑一个rest API响应并将其作为请求消息发送给另一个rest API 例:第一个api响应是 <?xml version="1.0"?> <api> <attribute_set_id>4</attribute_set_id> <type_id>simple</type_id> <sku>test_dress</sku> </api>

我们有2个rest API,必须编辑一个rest API响应并将其作为请求消息发送给另一个rest API

例:第一个api响应是

<?xml version="1.0"?>
<api>
  <attribute_set_id>4</attribute_set_id>
  <type_id>simple</type_id>
  <sku>test_dress</sku>
</api>

4.
易于理解的
试衣
现在我们必须将该响应编辑为

<?xml version="1.0"?>
<api>
  <id>4</id>
  <product_id>simple</product_id>
  <sku>test_dress</sku>
</api>

4.
易于理解的
试衣
并将该响应作为请求消息发送给另一个RESTAPI。 是否可以通过WSO2 ESB实现,请提供用于上述场景的任何示例

如果我需要提供更多细节,请告诉我

谢谢,
Geetha Gupta

您需要的是XSLT中介()


请参阅此示例

您可以通过以下步骤来完成

  • 读取响应并使用
  • 使用
  • 之后,您可以使用
    中介调用另一个rest

您必须定制小样本以满足您的需求:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="MyProxy"
       transports="http"
       startOnLoad="true"
       trace="disable">
    <description/>
    <target>
        <inSequence>
            <!-- send current message to rest api 1 (sample with a dynamic value inside rest url) -->
            <property name="uri.var.MyPath" value="mypath"/>
            <call>
                <endpoint>
                    <http method="POST" uri-template="http://myhost/{uri.var.MyPath}/restapi1"/>
                </endpoint>
            </call>
            <!-- here come the response from rest api 1 : transform this response -->
            <payloadFactory media-type="xml">
                <format>
                    <api>
                        <id>$1</id>
                        <product_id>$2</product_id>
                        <sku>$3</sku>
                    </api>
                </format>
                <args>
                    <arg evaluator="xml" expression="//api/attribute_set_id/text()"/>
                    <arg evaluator="xml" expression="//api/type_id/text()"/>
                    <arg evaluator="xml" expression="//api/sku/text()"/>
                </args>
            </payloadFactory>
            <!-- call rest api 2 -->
            <call>
                <endpoint>
                    <http method="POST" uri-template="http://myhost/{uri.var.MyPath}/restapi2"/>
                </endpoint>
            </call>
            <!-- send back response from restapi2 -->
            <send/>
        </inSequence>
        <outSequence/>
    </target>
</proxy>

$1
$2
$3

我想在发送到第二个rest api之前对响应进行编辑,并对上述内容表示歉意。您应该为此使用负载工厂中介。如果第一个API响应具有多个产品详细信息,我如何获取每个产品的参数并发送到第二个API请求。4简单测试服装5简单测试材料