如何从wso2 ESB中的另一个服务调用服务(或一个服务的参数)

时间:2016-01-04 12:11:03

标签: json wso2 wso2esb restful-url

我使用wso2 ESB以json格式创建rest API。我有一个宁静的json webservice,它给出了响应。我需要在另一个服务调用中使用此响应的一个参数。 我怎样才能在wso2 ESB中进行这种服务链接。

代表: -

我有一个安静的网址,如abc.com/cusotmer。我得到了回复。假设" id"是响应的参数之一。 我想在另一个服务调用(例如xyz.com/sheet)中使用此参数,该调用在内部调用第一个服务(abc.com/cusotmer)。

你们中有谁可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

服务链是任何ESB中的重要特征。

您可以使用Call Mediator将控件保留在序列中(比如您的密码)

你可以使用第一个端点的调用,第二个端点我假设id在响应体中可用,你可以使用json-eval或xpath来获取这个值,具体取决于你可以使用的第二个服务使用的数据类型PayloadFactoryMediator并在所需的身体部位设置ID

在下一行中,您可以使用Call Mediator或Send

再次拨打电话

粗略的代码就像。

<payloadFactory media-type="json">
            <format>
                 { "A": "6", "tests": [{ "id": "xyz", "status": "new", "emp": [{ "Id": "12345" }] }], "student": [{ "Id": "65", "Name": "Ram" }] }
            </format>

        </payloadFactory>
<call>
        <endpoint>
           <http method="get" uri-template="http://192.168.1.10:8088/mockaxis2service"/>
        </endpoint>
     </call>
<!-- suppose id field comes as response in field name id2 -->
<payloadFactory media-type="json">
            <format>
               {
                 "inp2second":"$1"       
               }
            </format>
            <args>
                <arg expression="$.emp.id2"/>
            </args>
        </payloadFactory>
<call> or <send>

您现在可以使用调用或发送调解器,发送调解器将控件移到后面。

对于上面用作$.emp.id2的json表达式,请参考json support page 服务链的示例也可用here

答案 1 :(得分:0)

这是服务链。您可以参考WSO2库文章,该文章通过示例清楚地解释了这一点 http://wso2.com/library/articles/2011/01/wso2-esb-by-example-service-chaining/