这个payloadFactory中介正是做了什么?

时间:2017-03-27 18:52:34

标签: wso2 wso2esb wso2dss

我在 WSO2 中绝对是新手,我正在开发一个包含 ESB项目部分的WSO2企业集成商项目(我认为我的问题只与 ESB )。

所以我的疑问是:我有一个定义 API 的XML文件。流程从 payloadFactory 介体开始,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<api context="/xxxTest2" name="xxxTest2" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET">
        <inSequence>
            <!--  Create empty message to get all samples from DSS -->
            <!-- Get Sample ID -->
            <payloadFactory media-type="xml">
                <format>
                    <body/>
                </format>
                <args>
                    <arg evaluator="xml" expression="get-property('uri.var.int_val')" xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd"/>
                </args>
            </payloadFactory>
            ...............................................................
            ...............................................................
            ...............................................................
</api>

我可以使用CURL发送此API句柄请求:

curl -v http://MY_SERVER_IP:8280/xxxTest2

阅读官方文件:

https://docs.wso2.com/display/ESB481/PayloadFactory+Mediator

我知道有效负载工厂用于创建必须使用发送HTTP请求的内容发送的内容消息(如果这是错误的断言,请更正我)。

我怀疑是:

此邮件的内容为空,因为它是:

<format>
    <body/>
</format>

但它包含在 args 元素中定义的这个参数:

<args>
    <arg evaluator="xml" expression="get-property('uri.var.int_val')" xmlns:ns="http://org.apache.synapse/xsd" xmlns:ns3="http://org.apache.synapse/xsd"/>
</args>

所以我有两个疑问:

1)阅读之前的文档时,此参数应包含先前有效内容( ... 元素)中 $ 1 变量的内容值。但它是空的。它不包含任何变量。那么为什么我会找到这个论点?

2)使用表达式

检索参数的值
expression="get-property('uri.var.int_val')"

这个表达究竟是什么?什么是检索?

1 个答案:

答案 0 :(得分:1)

要将参数传递给Payload工厂介体,必须在部件中声明它。

假设您将参数'name'传递给有效负载工厂介体,您的源应该看起来像

<payloadFactory media-type="xml" xmlns="http://ws.apache.org/ns/synapse">
<format>
    <name_of_the_element xmlns="">$1</name_of_the_element>
</format>
<args>
    <arg evaluator="xml"
        expression="get-property('uri.var.int_val')" literal="false"/>
</args>

这里,uri.var.int_val的值将传递给元素$ 1。 PAyload工厂中介使用其参数的位置参数,即$ 1,$ 2,.... $ N。

  1. 如果您创建的有效负载中没有参数,则可以删除源中的部件。因此,如果您的有效负载是公正的,那么您的来源将是,
  2.  <payloadFactory media-type="xml">
                    <format>
                        <body/>
                    </format>
         </payloadFactory>
    
    1. 表达式expression =“get-property('uri.var.int_val')”从URI参数中提取int_val的值。 感谢