Appearance
ESB统一请求工具使用说明
配置说明
为统一ESB接口请求调用方式,方便和简化各业务组调用ESB接口,现封装了ESB调用库,引入方式如下:
- 在 POM 文件中增加依赖
pom
<dependency>
<groupId>com.tineco.esb.helper</groupId>
<artifactId>esb-helper</artifactId>
<version>1.0.0</version>
</dependency>- 在配置文件中增加ESB相关配置,目前需要配置两个项目,默认配置的是ESB测试环境,如果发布在正式环境,请修改为ESB正式环境域名和appkey,如下所示:
yml
esb:
helper:
host: https://t-esb-gateway.tineco.com
appkey: 637dd7aafd42a5381f76a91a方法说明
- 目前提供两个方法,Get方法和Post方法,都是同步方法,暂不支持异步方法
- Get方法: 参数: apiUrl: 类型为
String,接口除host外的链接地址,如 /restcloud/tineco-user/sso/third-system/sendMsgToTineChat; pathParams: 类型为Map<String, Object>,链接中的参数,如/v1/{name},name即为pathParam; urlParams: 类型为Map<String, Object>,拼接在链接后面的参数,如/v1/countries?code=xxx&name=xxx,code和name即为urlParam 返回结果: HttpResult.Body: 获取到body对象后,必须对它进行非空判断,验证通过后,调用toBean方法或者toList方法进行反序列化;更多请参考文档 - Post方法: 参数: apiUrl:类型为
String,接口除host外的链接地址,如 /restcloud/tineco-user/sso/third-system/sendMsgToTineChat; headers: 类型为Map<String, String>,接口除了appkey外的的其他需要header; params: 类型为Map<String, Object>,Json类型Body里的参数; 返回结果: HttpResult.Body: 获取到body对象后,必须对它进行非空判断,验证通过后,调用toBean方法或者toList方法进行反序列化;更多请参考文档
- Get方法: 参数: apiUrl: 类型为
调用示例
java
private final EsbClient esbClient;
List<TodoCountResponse> todoCounts = new ArrayList<>();
List<String> countUrls = pdsConfig.getEsbInfo().getTodoCountUrls();
Map<String, String> header = new HashMap<>();
header.put("system", "PORTAL");
Map params = JSON.parseObject(JSONObject.toJSONString(request), Map.class);
try {
for (String url : countUrls) {
HttpResult.Body body = esbClient.post(url, header, params);
if (Objects.isNull(body)) {
continue;
}
EsbResult res = body.toBean(EsbResult.class);
if (Objects.nonNull(res)) {
todoCounts.add(TodoCountResponse.convert(res.getData()));
} else {
log.error("url:::{}", url);
log.error("获取Todo Count 数据失败");
}
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return todoCounts;以上就是ESB统一请求工具的使用说明,目前为1.0.0版本,后期会继续迭代,大家有什么需求想法也可以发给我。
- Tinechat: truman.zhang
