泛微ECOLOGY9-ESB中心自定义接口执行JAVA代码将字符串转换为数组并多次调用其他接口

实现效果:

实现效果

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. 解决方案

  1. 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中心自定义接口和应用管理配置,配合使用即可解决需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图图闹海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值