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

DBAPI如何实现API编排

DBAPI如何实现API编排

什么是编排API?

  • DBAPI 可以将多个API组合成一个API,从而实现更复杂的业务场景。通过页面上编辑流程图,可以快速实现业务场景的编排
  • 比如电商业务中,有多个API:创建订单表记录A、商品信息减库存B、生成物流订单C,那么我们可以编排A-> B-> C,实现一个完整的下单API。客户端调用下单API,会自动按流程访问A、B、C

  • 同时编排支持判断节点,在判断节点编写自定义脚本,可以根据判断脚本自动流转到不同的分支执行API

  • 编排也支持将前一个API的结果作为参数传入下一个API

需求

  • 插入学生数据之前判断数据是否已存在,如果不存在就插入,存在就更新
  • 先准备好三个API
  1. 根据name查询已存在的学生数量


  1. 新增学生,根据name和age参数插入学生信息


  1. 更新学生,根据name修改学生的年龄信息


API编排实操

  • 点击分组上的创建编排API按钮,进入编排页面

  • 左侧定义API的基本信息,注意定义两个参数nameage

  • 点击开始节点,在页面会创建一个开始节点,可以拖动到画布合适位置

  • 点击API节点,在页面会创建一个API节点,鼠标悬浮在API节点会显示一个编辑按钮,点击按钮进入编辑界面

  • 选择API为查询学生数量,此时参数定义会自动加载出来,开始填写参数

参数值请填写JS脚本,系统通过JS脚本动态计算参数的值。

JS脚本中可以使用系统内置变量 parametersresultsparameters的值是整个编排API最外层的所有参数值;results的值是每个节点执行返回的结果,如果是API节点就是API请求返回的结果,如果是判断节点就是判断后的结果(true或者false),可以通过节点ID作为key取出某个节点的结果

这里填写name参数为parameters.name

填写节点ID,注意必须是英文字母和数字组成且以英文字母开头,如果画布中有多个节点,注意节点ID不能重复,要唯一

注意这个ID可以在后面的节点中使用,例如results.[id]可以提取此节点执行结果

  • 将开始节点和API节点用连线连接起来

  • 点击判断节点,在页面会创建一个判断节点,鼠标悬浮会显示一个编辑按钮,点击按钮进入编辑界面

  • 填写节点ID,填写判断脚本

判断脚本请填写JS脚本,必须是bool表达式,系统通过JS脚本动态计算判断的值

JS脚本中可以使用系统内置变量 parametersresultsparameters的值是整个编排API最外层的所有参数值;results的值是每个节点执行返回的结果,如果是API节点就是API请求返回的结果,如果是判断节点就是判断后的结果(true或者false),可以通过节点ID作为key取出某个节点的结果

这里我们填写results.count.data[0].num == 0

因为查询学生数量API的执行结果格式为{"data":[{"num":0}],"msg":null,"success":true}results.count.data[0].num表示取出num值

  • 连线

  • 添加API节点,选择插入新的学生API,定义id为add

这里填写name参数为parameters.name, age参数为parameters.age


  • 添加API节点,选择修改学生年龄API,定义id为update

这里填写name参数为parameters.name, age参数为parameters.age


  • 将判断节点的Y端口连线到节点add,将判断节点的N端口连接到节点update

判断结果为true时执行Y分支,判断结果为false时执行N分支。

  • 添加结束节点,编辑脚本内容为results.add,将节点add连接到此节点


  • 添加结束节点,编辑脚本内容为results.update,将节点update连接到此节点



  • 保存API并上线


  • 请求测试

  • 先传入参数name=刘德华 age=50,执行成功可以看到插入了一条数据

通过日志也可以看出执行了add节点

  • 再传入参数name=刘德华 age=60,执行成功可以看到更新了一条数据


通过日志也可以看出执行了update节点

总结

API编排在企业版4.2.0以上版本支持

http://www.xdnf.cn/news/14251.html

相关文章:

  • Android14关机流程
  • web方向第一次考核内容
  • [每周一更]-(第145期):分表数据扩容处理:原理与实战
  • Git常用命令摘要
  • 智能集运重塑反向海淘:系统破解物流困局
  • HarmonyOS 5鸿蒙多端编译实战:从Android/iOS到HarmonyOS 5 的跨端迁移指南详
  • 【论文阅读】Multi-Class Cell Detection Using Spatial Context Representation
  • SparkUI依赖问题解决方法
  • React 性能优化实战指南:从理论到实践的完整攻略
  • Linux--磁盘寻址:从 CHS 到 LBA 的深度解码之旅
  • 深度解析Java泛型:从原理到实战应用
  • 大模型在颈椎管狭窄诊疗中的应用研究报告
  • MySQL 调优笔记
  • 嵌入式系统内核镜像相关(五)
  • 33-Oracle Parallel 并行处理的选择和实践
  • 【论文阅读34】Attention-ResNet-LSTM(JRMGE2024)
  • 移动开发中边框1px的问题
  • AJAX——前后端传输数据场景下使用的技术
  • java设计模式[2]之创建型模式
  • 【无标题】【2025年软考中级】第三章数据结构3.2 栈与队列
  • 【0.0 漫画C语言计算机基础 - 从二进制开始认识计算机】
  • 纯 CSS 实现的的3种扫光效果
  • 记录lxml中的etree、xpath来定位、爬取元素
  • 清理 Docker 容器日志文件方法
  • YOLOv3 训练与推理流程详解-结合真实的数据样例进行模拟
  • 19.vue.js的style的lang=scss、less(2)
  • 荒原之梦:致力于考研数学实战
  • 大模型——Dify 与 Browser-use 结合使用
  • Spring AI Alibaba Graph 实践
  • 简历模板2——数据挖掘工程师5年经验