如何在Integration Studio中从Property获取参数至Script Mediator?
解决WSO2 Integration Studio中Script Mediator获取URL查询参数的问题
问题原因
你当前的代码中,property 配置的 scope 为 default,但 mc.getProperty('energyType') 默认只会从message scope读取属性,两者不匹配导致无法获取到值。
解决方案
以下是几种可行的修复方式:
方式1:修改Property的Scope为Message
将Property的scope改为message,这样Script Mediator可以直接通过mc.getProperty读取:
<property description="Get EnergyType Of Url" expression="$url:energyType" name="energyType" scope="message" type="STRING"/> <log description="Logging EnergyType Of Url"> <property expression="$url:energyType" name="EnergyType"/> </log> <script language="js"><![CDATA[ var energyType = mc.getProperty('energyType'); // 后续使用energyType的逻辑 ]]></script>
方式2:在Script中指定Scope获取属性
如果需要保留default scope,在调用mc.getProperty时明确指定default scope即可:
<property description="Get EnergyType Of Url" expression="$url:energyType" name="energyType" scope="default" type="STRING"/> <log description="Logging EnergyType Of Url"> <property expression="$url:energyType" name="EnergyType"/> </log> <script language="js"><![CDATA[ // 第二个参数指定scope为default var energyType = mc.getProperty('energyType', 'default'); // 后续使用energyType的逻辑 ]]></script>
方式3:直接在Script中读取URL查询参数(无需Property)
可以跳过Property配置,直接在JavaScript中从Axis2上下文获取并解析查询参数:
<log description="Logging EnergyType Of Url"> <property expression="$url:energyType" name="EnergyType"/> </log> <script language="js"><![CDATA[ // 获取完整的URL后缀(包含查询参数) var restUrlPostfix = mc.getEnvironment().getAxis2MessageContext().getProperty("REST_URL_POSTFIX"); // 解析查询参数 var params = new URLSearchParams(restUrlPostfix.split('?')[1] || ''); var energyType = params.get('energyType'); // 后续使用energyType的逻辑 ]]></script>
验证提示
修改后可以在Script中添加日志输出验证是否获取成功:
mc.getLog().info("EnergyType from Script: " + energyType);
内容的提问来源于stack exchange,提问作者Ahmet Kalem
相关产品推荐
相关产品推荐

