开源地址:gitee | github
详细介绍:MyData 基于 Web API 的数据集成平台
部署文档:用 Docker 部署 MyData
使用手册:MyData 使用手册
试用体验:https://demo.mydata.work
交流Q群:430089673
介绍
MyData ,一个旨在简化 Web 应用之间数据对接的工具,提高日常工作效率,如其名“我的数据” 旨在让用户更好的掌控和管理数据。
通过界面配置 实现多应用之间 基于API的数据对接。
诚邀体验,免费技术支持,详见 https://blog.csdn.net/tle3212000/article/details/137639827
0.8.1
主要更新内容:
- 新增Web hook推送数据模式;
- API地址支持{PathVariable}模式;
新功能
-
任务管理
- 提供数据类型 增加“调用API”和“接收推送”模式选项,平台提供接口接收数据;
- 提供数据类型 增加“调用API”和“接收推送”模式选项,平台提供接口接收数据;
-
接收推送
- 新增接口,支持web hook或API主动推送数据,实现认证和接收推送的数据,并通过任务执行后续流程;
@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping(MdConstant.API_PREFIX_MANAGE + "/integration")
public class IntegrationEndpoint {
@Resource
private final ITaskService taskService;
@Resource
private final JobExecutor jobExecutor;
@PostMapping("/{task_url}")
public R post(@PathVariable("task_url") String taskUrl, @RequestHeader HttpHeaders httpHeaders, @RequestBody String body) {
log.info("integration post");
return execute(taskUrl, httpHeaders, body);
}
@PutMapping("/{task_url}")
public R put(@PathVariable("task_url") String taskUrl, @RequestHeader HttpHeaders httpHeaders, @RequestBody String body) {
log.info("integration put");
return execute(taskUrl, httpHeaders, body);
}
private R execute(String taskUrl, HttpHeaders httpHeaders, String body) {
log.info("integration url : {}", taskUrl);
log.info("integration headers : {}", httpHeaders);
log.info("integration body : {}", body);
Assert.notEmpty(taskUrl, "操作失败:地址 {} 无效!", taskUrl);
Task task = taskService.findByApiUrl(taskUrl);
Assert.notNull(task, "操作失败:地址 {} 无效!", taskUrl);
Assert.equals(task.getTaskStatus(), MdConstant.TASK_STATUS_RUNNING, "操作失败:任务未启动 无法执行!");
Integer authType = task.getAuthType();
if (MdConstant.TASK_AUTH_TYPE_NONE.equals(authType)) {
// do nothing
} else {
// 检查认证参数配置是否有效
Map<String, String> authParams = task.getAuthParams();
if (CollUtil.isNotEmpty(authParams)) {
Assert.notNull(task, "操作失败:认证参数未配置!");
}
// 校验认证参数
if (MdConstant.TASK_AUTH_TYPE_API_KEY.equals(authType)) {
checkApiKey(authParams, httpHeaders);
} else if (MdConstant.TASK_AUTH_TYPE_BASIC.equals(authType)) {
checkBasicAuth(authParams, httpHeaders);
} else if (MdConstant.TASK_AUTH_TYPE_HMAC.equals(authType)) {
// TODO
} else {
throw new IllegalArgumentException("操作失败:不支持任务的认证类型!");
}
}
// 执行任务流程 接收数据
jobExecutor.acceptData(task, body);
return R.success(StrUtil.format("任务 [{}] 开始执行,请查看日志。", task.getTaskName()));
}
// ...
}
- API管理
- url支持
{field}
格式的变量 适配PathVariable模式,调用API时从数据中提取指定字段值并替换;
- url支持
优化
-
任务管理
-
优化cron编辑器,减少占用空间;
-
简化任务卡片,其他信息通过点击显示;
-
订阅消费支持选择来源任务,以便指定触发执行的前置任务;
-
消费数据类型 增加“单数据模式”开关,以便发送一条记录时 用集合或单个对象;
-
增加下次执行时间,以便了解任务运行情况;
-
-
定时任务
-
任务日志 提前到存入缓存时就生成,以便了解任务运行情况;
-
增加数据对比,减少无变更数据的更新写入操作;
-
修复
-
任务管理
- 消费数据类型任务,向API发送业务数据后 修复未接收返回和更新自定义变量的问题;
-
定时任务
-
增加数据批次标识,解决分批获取数据后订阅任务丢失数据问题;
-
修复过滤条件值类型不匹配问题;
-