如何在WSO2 Integrator Studio中根据客户端传入值替换请求体参数
在WSO2 Integrator Studio中实现请求体Name字段的映射转换
根据你的需求,需要将客户端请求中Name字段的编号转换为指定字符串后转发给下游端点,以下是几种实用的实现方案:
方案1:固定映射(单值替换)
如果所有客户端编号都需要转换为固定值(比如统一转成"BANK"),用Payload Factory Mediator最直接:
- 打开你的API对应的序列(通常是
In Sequence,在调用下游端点前添加) - 从左侧面板拖拽
Payload Factory Mediator到序列中 - 选中该Mediator,在右侧配置面板选择JSON格式
- 输入JSON模板:
{ "count": "$1", "Name": "BANK" }
- 添加参数:点击
Add Parameter,在表达式框输入json-eval($.count),用于提取原请求中的count字段值
配置完成后,该Mediator会保留原请求的count值,同时把Name字段替换为固定的"BANK"。
方案2:多值动态映射(编号对应不同名称)
如果不同客户端编号需要映射到不同字符串,推荐用**Script Mediator(JavaScript)**实现:
- 在序列中拖拽
Script Mediator - 选中Mediator,在右侧选择JavaScript语言
- 粘贴以下脚本(可根据实际需求修改映射表):
// 解析请求体为JSON对象 var payload = JSON.parse(mc.getPayloadJSON()); // 定义编号与名称的映射关系 var nameMapping = { "22312312": "BANK", "12345678": "INSURANCE", "87654321": "RETAIL" }; // 替换Name字段,无匹配时用默认值 payload.Name = nameMapping[payload.Name] || "UNKNOWN"; // 将修改后的JSON设置回请求体 mc.setPayloadJSON(payload);
- 保存配置即可
这种方式灵活度高,后续新增映射只需修改nameMapping对象即可。
方案3:Switch Mediator(适合少量映射)
如果映射关系很少(比如2-3组),可以用Switch Mediator做分支处理:
- 拖拽
Switch Mediator到序列中 - 设置表达式为
json-eval($.Name),用于匹配Name字段的值 - 为每个编号添加
Case:- 比如Case值设为"22312312",在Case内添加
Property Mediator,设置name为json-eval($.Name),value为"BANK"
- 比如Case值设为"22312312",在Case内添加
- 添加
Default Case,处理未匹配到的编号(比如设置默认名称)
注意事项
- 确保客户端请求的Content-Type为
application/json,如果不是,需先添加JSON Transform Mediator将请求转为JSON格式 - 测试时可以用Postman发送请求,通过Integrator Studio的日志查看修改后的请求体是否符合预期
- 若映射表需要动态更新,可以将映射关系存储在WSO2 Registry或Local Entry中,在Script Mediator中读取对应配置
内容的提问来源于stack exchange,提问作者Ehsan
相关产品推荐
相关产品推荐

