我正在将现有的 Mule 3 应用程序迁移到 Mule 4
Mule 3 正在进行 APEX GET 调用并传递
path param / uri param
以及 query param
这是 Mule 3 的源代码:
<sfdc:invoke-apex-rest-method config-ref="SFDC_config"
restMethodName="EmpMaintenanceDetails||getEmpMaintenanceDetails^/services/apexrest/EmpMaintenanceDetails/
#[flowVars.empId]?id=#[flowVars.empId]^HttpGet^application/json^" doc:name="Salesforce: EmpMaintenanceDetails"/>
所以这里
flowVars.empId
是路径参数,id=#[flowVars.empId]
是作为查询参数传递的相同值
对于 Mule 4,我能够在 dataweave 中传递查询参数:
<ee:transform doc:name="set empId as query param" >
<ee:message >
<ee:set-payload >
<![CDATA[%dw 2.0
output application/json
---
{
queryParams:{
id: message.attributes.uriParams.'empId'
}
}]]>
</ee:set-payload>
</ee:message>
</ee:transform>
但是我不确定如何传递路径/uri 参数?
对于 Anypoint Studio 中的 Mule 4,方法名称会自动填充,因此这是我为 Mule 4 编写的代码:
<salesforce:invoke-apex-rest-method doc:name="SF EmpMaintenanceDetails GET call"
config-ref="SFDC_config" className="EmpMaintenanceDetails"
methodName="getEmpMaintenanceDetails^/EmpMaintenanceDetails/*^HttpGet^void^" />
您可以将方法名称中的
EmpMaintenanceDetails/*
替换为数据编织表达式来获取变量:
EmpMaintenanceDetails/#[vars.empId]
我认为自动填充只是默认为 uri 参数添加一个通配符。