实现效果:
1. 用户/业务需求
REST接口响应参数为字符串,需要将响应字符串拆分为数组并依次调用其他接口。
REST接口响应参数格式为
{
"body": {
"code": "0",
"msg": "",
"data": [
{
"apply_id": "651fb75f65114533cea0f7e1,651fb75f65114533cea0f7e1,652208c4dc9d343005a1b2ed,6522086e07a5f86b5e110296,652204786cca6359a11c7ada,65220403dc9d343005a19878"
}
],
"timestamp": "1720853015096",
"postToken": ""
},
"statusCode": "200"
}
2. 需求分析
ESB中心标准功能中无该功能,实现该需求需要自定义接口将字符串拆分为数组进行多次执行调用接口。
3. 实现思路
ESB中心-接口管理-新建"执行JAVA代码",将响应字符串拆分为数组。
4. 解决方案
- ESB中心-接口管理:新建接口,接口类型为“执行JAVA代码”、所需资源默认不填为OA本地资源、服务调用类推荐使用在线编辑;
在线编辑内容:
package com.weaver.esb.package_20240606064008;
import java.util.*;
public class class_20240606064008 {
/**
* @param: param(Map collections)
* 参数名称不能包含特殊字符+,.[]!"#$%&'()*:;<=>?@\^`{}|~/ 中文字符、标点 U+007F U+0000到U+001F
*/
public Map execute(Map<String, Object> params) {
// 获取入参
String data = (String) params.get("data");
// 将字符串按照逗号分割成数组
String[] dataArray = data.split(",");
// 创建一个列表来存储转换后的数据
List<Map<String, String>> dataList = new ArrayList<>();
// 遍历数组,为每个元素创建一个Map
for (String applyId : dataArray) {
Map<String, String> item = new HashMap<>();
item.put("apply_id", applyId);
dataList.add(item);
}
// 创建返回的Map
Map<String, Object> ret = new HashMap<>();
ret.put("data", dataList);
return ret;
}
}
2.请求数据:
在线编辑内容中String data = (String) params.get("data");
定义请求参数为data,配置内容保持一致。
3.响应数据:
在线编辑内容中定义响应参数为apply_id,且返回数组格式data勾选明细数据。
4.应用配置
总结:
重点在于学会使用ESB中心自定义接口和应用管理配置,配合使用即可解决需求。