当前位置: 首页 > news >正文

手把手教你用Postman调试DolphinScheduler 3.x创建任务API(附数据库查Code指南)

手把手教你用Postman调试DolphinScheduler 3.x创建任务API(附数据库查Code指南)

在分布式任务调度系统的日常运维中,API调试是开发者和运维人员必须掌握的硬核技能。DolphinScheduler作为一款开源的分布式易扩展可视化工作流任务调度平台,其API的灵活调用能极大提升自动化运维效率。本文将带您从零开始,完整走通创建任务API的调试全流程,重点解决两个核心痛点:如何正确构造包含taskDefinitionJsonObj等复杂参数的Postman请求,以及如何从数据库准确获取必需的code参数(包括工作流code、项目code等)。无论您使用的是MySQL还是PostgreSQL数据库,或是部署在K8s环境中,都能在本指南中找到对应的解决方案。

1. 环境准备与数据库连接

1.1 确认数据库类型与连接信息

在开始API调试前,我们需要先获取DolphinScheduler的元数据信息。这些信息通常存储在后台数据库中,因此第一步是确认您的部署环境使用的是哪种数据库:

# 查看K8s部署配置(假设使用Helm部署) kubectl get configmap -n dolphinscheduler dolphinscheduler-config -o yaml | grep -i "database"

对于K8s部署,数据库配置通常在values.yaml文件中。关键配置项包括:

配置项示例值说明
database.typepostgresql数据库类型
database.hostpostgresql.dolphinscheduler.svc.cluster.local数据库主机地址
database.port5432数据库端口
database.usernameadmin数据库用户名
database.passworddolphinscheduler123数据库密码
database.databasedolphinscheduler数据库名称

1.2 数据库连接与查询

根据不同的数据库类型,使用对应的客户端工具连接数据库:

MySQL连接示例:

mysql -h 数据库地址 -P 端口 -u 用户名 -p密码 数据库名

PostgreSQL连接示例:

psql -h 数据库地址 -p 端口 -U 用户名 -d 数据库名

连接成功后,执行以下SQL查询获取必要的code信息:

-- 查询项目列表 SELECT id, name, code FROM t_ds_project; -- 查询工作流定义 SELECT id, name, code, project_code FROM t_ds_process_definition; -- 查询任务定义 SELECT id, name, code, process_definition_code FROM t_ds_task_definition;

注意:在实际操作中,建议将这些查询结果保存到本地文本文件中,后续API调用时会频繁用到这些code值。

2. Postman请求配置详解

2.1 创建新请求与认证配置

  1. 打开Postman,创建一个新的POST请求
  2. 设置请求URL为:http://<DS服务地址>:<端口>/dolphinscheduler/projects/<project_code>/task-definition/save-single
  3. Headers中添加以下内容:
KeyValue
Content-Typeapplication/json
token<您的会话token>

获取token的方法:

  • 通过UI登录后从浏览器Cookie中获取sessionId
  • 或者调用登录API获取:
curl -X POST http://<DS服务地址>:<端口>/dolphinscheduler/users/login \ -H "Content-Type: application/json" \ -d '{"userName":"admin", "userPassword":"dolphinscheduler123"}'

2.2 请求体构造

创建任务API的核心在于正确构造taskDefinitionJsonObj参数。以下是一个完整的请求体示例:

{ "processDefinitionCode": "1234567890123", "upstreamCodes": "9876543210987", "taskDefinitionJsonObj": { "code": "", "delayTime": 0, "description": "", "environmentCode": -1, "failRetryInterval": 1, "failRetryTimes": 0, "flag": "YES", "name": "测试任务", "taskParams": { "rawScript": "echo 'Hello DolphinScheduler'", "localParams": [], "resourceList": [] }, "taskPriority": "MEDIUM", "taskType": "SHELL", "timeout": 0, "timeoutFlag": "CLOSE", "timeoutNotifyStrategy": null, "workerGroup": "default" } }

关键参数说明:

  • processDefinitionCode: 工作流定义code(从数据库查询获得)
  • upstreamCodes: 上游节点code(可选,多个用逗号分隔)
  • taskDefinitionJsonObj中的核心字段:
    • name: 任务名称(在UI中显示)
    • taskType: 任务类型(如SHELL、SQL等)
    • taskParams.rawScript: 任务执行脚本内容

3. 常见问题排查指南

3.1 错误代码与解决方案

错误码可能原因解决方案
500数据库连接失败检查数据库服务是否正常,网络是否通畅
401未授权检查token是否有效,是否已过期
400参数错误检查所有code值是否正确,特别是processDefinitionCode
404资源不存在确认项目code和工作流code是否存在

3.2 调试技巧

  1. 日志查看:当API调用失败时,首先检查DolphinScheduler服务日志

    kubectl logs -n dolphinscheduler <api-server-pod-name> -f
  2. UI对比法:在UI界面手动创建一个简单任务,通过浏览器开发者工具查看实际发送的请求参数

  3. 参数校验:使用Postman的Pre-request Script功能对参数进行预校验:

    // 示例:检查必填参数是否存在 if (!pm.request.body.raw.includes('processDefinitionCode')) { throw new Error("缺少processDefinitionCode参数"); }

4. 完整工作流验证

为了确保我们的API调用真正生效,建议按照以下步骤进行端到端验证:

  1. API调用:在Postman中发送创建任务请求,确保返回状态码为200
  2. 数据库验证:查询数据库确认任务已创建
    SELECT * FROM t_ds_task_definition WHERE name = '测试任务';
  3. UI验证:登录DolphinScheduler UI,在对应项目中检查:
    • 任务节点是否出现在工作流定义中
    • 任务参数是否正确显示
  4. 执行测试:手动触发工作流执行,观察任务执行日志

提示:对于生产环境,建议先在一个测试项目中完整走通整个流程,再应用到正式环境。

http://www.jsqmd.com/news/595789/

相关文章:

  • AI 赋能传统开发:Pixel Mind Decoder 在 Java 学习路线中的实践环节设计
  • 5大实用技巧:用深蓝词库转换打破输入法壁垒
  • 别再傻傻分不清了!MATLAB做频谱分析时,fft和fftshift到底该用哪个?(附代码对比)
  • 2026年高端灯具品牌推荐:聚焦技术与美学的照明新体验 - 品牌排行榜
  • 你的MPU6050数据不准?先检查这3个摆放与校准的细节(附坐标矩阵修改教程)
  • 如何高效清理Windows驱动残留:DriverStore Explorer完整使用指南
  • 从源码到可执行文件:手把手教你用CMake和VS2017编译开源点云查看器PCV
  • 3步攻克NCM加密壁垒:让音乐文件重获跨设备自由
  • Qwen3-0.6B-FP8开源可部署:无需CUDA编译,FP8镜像直接加载运行
  • Node.js 结合 LangChainJS 实现智能对话系统的实战探索
  • Node.js极速入门:Yi-Coder-1.5B实战指南
  • ViGEmBus:终极Windows虚拟手柄驱动完整使用教程
  • 2026年高端照明品牌推荐:技术与美学融合的行业典范 - 品牌排行榜
  • 实战演练:将idea ai插件的灵感在快马平台转化为可部署的全栈博客管理系统
  • 在CSDN星图GPU平台一键部署Lingbot-Depth-Pretrain-VitL-14:免配置入门指南
  • 新手别慌!用ADS 2023从零搭建一个6GHz低通滤波器(附S参数仿真全流程)
  • 终极指南:3分钟学会用qmcdump解锁QQ音乐加密文件
  • lychee-rerank-mm行业方案:文旅部门景区图片库按游客搜索词智能排序
  • 串口高频RFID读卡器T6系列操作指南:DESFIRE芯片卡密钥管理与文件读写实战
  • 2026年国内可靠的护栏网制造厂推荐分析,草原网/石笼网/护栏网/爬架网/勾花网/钢筋网片,护栏网源头厂家推荐分析 - 品牌推荐师
  • 3步打造个性化Windows任务栏:轻量级桌面美化工具TranslucentTB使用指南
  • JS手撕:DOM操作 浏览器API高频场景详解
  • 黑丝空姐-造相Z-Turbo构建AI编程助手:自动生成前端组件配图
  • RavenDB全文搜索与NGram分析器的实际应用
  • Qwen3.5-2B开源镜像部署:ARM64架构服务器(如Mac M2/M3)兼容验证
  • 2026年展厅设计公司有哪些?行业实力解析与选择参考 - 品牌排行榜
  • 华硕笔记本合盖模式终极指南:告别外接显示器休眠烦恼
  • 2026灯具品牌推荐:聚焦品质与创新的照明选择 - 品牌排行榜
  • Z-Image-GGUF助力开源社区:为GitHub项目自动生成演示图
  • Jimeng LoRA动态热切换实战:避免显存爆炸,轻松测试多训练阶段模型