这个 payloadFactory 调解器到底在做什么?
What is exactly doing this payloadFactory mediator?
我绝对是 WSO2 的新手,我正在开发一个包含此 ESB 项目部分 的 WSO2 Enterprise Integrator 项目(我认为我的问题只与 ESB).
有关
所以我的疑问是:我有一个 XML 文件定义了一个 API。流程以 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>
这个 API 处理我可以使用 CURL 发送的请求:
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>
所以我有2个疑问:
1) 阅读之前的文档,此参数应包含之前有效负载内容中的 $1 变量的内容值(... 元素)。但它是空的。它不包含任何变量。那么为什么我发现这个论点?
2) 参数的值用表达式检索:
expression="get-property('uri.var.int_val')"
这个表达式到底是什么意思?什么是检索?
要将参数传递给 Payload 工厂调解器,您必须在该部分中声明它。
假设您正在将一个参数 'name' 传递给有效载荷工厂调解器,您的源应该类似于
<payloadFactory media-type="xml" xmlns="http://ws.apache.org/ns/synapse">
<format>
<name_of_the_element xmlns=""></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.
- 如果您创建的有效负载中没有参数,您可以删除源中的部分。因此,如果您的有效负载只是 ,那么您的源将类似于
<payloadFactory media-type="xml">
<format>
<body/>
</format>
</payloadFactory>
- 表达式expression="get-property('uri.var.int_val')"从URI参数中提取int_val的值。
谢谢
我绝对是 WSO2 的新手,我正在开发一个包含此 ESB 项目部分 的 WSO2 Enterprise Integrator 项目(我认为我的问题只与 ESB).
有关所以我的疑问是:我有一个 XML 文件定义了一个 API。流程以 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>
这个 API 处理我可以使用 CURL 发送的请求:
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>
所以我有2个疑问:
1) 阅读之前的文档,此参数应包含之前有效负载内容中的 $1 变量的内容值(... 元素)。但它是空的。它不包含任何变量。那么为什么我发现这个论点?
2) 参数的值用表达式检索:
expression="get-property('uri.var.int_val')"
这个表达式到底是什么意思?什么是检索?
要将参数传递给 Payload 工厂调解器,您必须在该部分中声明它。
假设您正在将一个参数 'name' 传递给有效载荷工厂调解器,您的源应该类似于
<payloadFactory media-type="xml" xmlns="http://ws.apache.org/ns/synapse">
<format>
<name_of_the_element xmlns=""></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.
- 如果您创建的有效负载中没有参数,您可以删除源中的部分。因此,如果您的有效负载只是 ,那么您的源将类似于
<payloadFactory media-type="xml"> <format> <body/> </format> </payloadFactory>
- 表达式expression="get-property('uri.var.int_val')"从URI参数中提取int_val的值。 谢谢