我在 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')"
这个表达究竟是什么?什么是检索?
答案 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。
<payloadFactory media-type="xml"> <format> <body/> </format> </payloadFactory>