API低代码平台介绍1-功能概述

news2024/11/15 7:08:43

API低代码平台之ADI平台

  ADI平台是指Application data integration,即“应用数据集成”,使用springboot开发,并通过springcloud实现微服务,是一个动态定义Http API接口的“零代码”或“低代码”平台,支持GET(查)、POST(增)、PUT(改)、DELETE(删)四种请求方式直接操作数据库数据;可动态添加多个数据源(实现原理),支持的数据库包括Oracle、Mysql、SqlServer、PostgreSQL;也可以作为本方业务系统与第三方业务系统对接的桥梁,支持动态修改报文格式、字典转换、请求转发、报文加解密、签名验签、自动获取第三方的access_token等常见的接口对接需求;接口定义完成后基于Swagger自动生成在线的接口文档,支持对接口进行在线测试。
  平台于2018年上线,经过岁月的洗礼,对接了上千个接口,在适应场景和执行效率上不断追求极致体验,成为公司业务系统与第三方业务系统对接的不二之选,受到公司研发人员的一致好评!
  利用该平台,业务系统研发周期至少缩短1个月。

一.动态定义接口-快速将数据库表生成API能力

  1. 最基本的数据查询功能(自定义sql语句,支持联合查询);
  2. 同时查多个数据库(多数据源模式);
  3. 数据新增功能(支持多表写入);
  4. 数据修改功能(支持多表更新);
  5. 数据删除功能(支持多表删除);
  6. 值得注意的是,平台支持条件判断,比如当满足某个条件时,才操作指定的数据库或表,不操作其它数据库或表。
    快速将数据库表生成API能力
    动态添加数据源

二.动态定义接口-快速与第三方系统对接

  1. 一对一的对接(一次请求对应一个第三方系统);
  2. 一对多的对接(一次请求分发多家系统),值得注意的是,平台支持条件判断,比如当满足某个条件时,才分发给指定的系统,不分发给其它系统;
  3. 自动获取第三方系统的access_token(自定义缓存时间);
  4. 验证ADI调用者的access_token(基于OAuth2.0客户端认证)。
    本方业务系统只需要调用ADI接口时基本上只需要传入极少的入参(往往是一个入参),ADI通过自定义sql语句查询组装为json报文(支持多层嵌套),发送给第三方系统,大大降低了业务系统研发人员的工作量。
    快速与第三方系统对接
    接口列表
    策略列表

三.与第三方系统对接的四种基本场景

  1. 本方业务系统查询第三方系统的数据(比如查询婚姻信息),对接方式:本方业务系统把请求参数传给ADI,ADI把请求转发到第三方系统,接收到第三方系统的响应后,把第三方的数据利用JavaScript转换为本方业务系统需要的数据格式,返回给本方业务系统;
  2. 本方业务系统推送数据给第三方系统(比如本方系统推送业务申请数据给第三方业务系统),对接方式:本方业务系统把业务编号传给ADI,ADI根据业务编号在本方数据库查询数据,利用JavaScript把查询所得数据转换为第三方系统需要的数据格式后,发送给第三方系统,接收到第三方系统的响应后,返回本方系统;
  3. 第三方系统推送数据给本方系统(比如第三方系统推送受理数据给本方系统),对接方式:在ADI定义一个接口,把接口地址提供给第三方,ADI接收到第三方推送的数据后,把数据写入某些数据库表(可选),然后把第三方的数据利用JavaScript转换为本方系统需要的数据格式,推送给本方系统(需要本方系统提供接口地址给ADI),接收到本方系统的响应后,把响应结果返回给第三方;
  4. 第三方系统查询本方系统的数据,对接方式:在ADI定义一个接口,把接口地址提供给第三方,根据第三方传入的查询参数,从本方数据库表查询数据,把查询结果利用JavaScript转换为第三方需要的数据格式后,返回给第三方。

四.报文格式转换

  1. 对请求ADI的报文进行格式转换,把报文转换为本方业务系统需要的格式;
  2. 对ADI请求第三方系统的报文进行格式转换,把报文转换为目标系统需要的格式;
  3. 对第三方响应的报文进行格式转换,把报文转换为本方业务系统需要的格式;
  4. 对ADI响应给调用者的报文进行格式转换,把报文转化为接口调用者需要的数据格式。
    格式转换涉及到“低代码”的使用,在线配置一段javascript程序即可实现,无需重启应用,而且javascript中可以调用ADI平台内置的一些java工具类哦,比如通过文件url获取文件base64字符串、15位身份证号码转18位、java中Date对象的使用。

五.字典值自动转换

  1. 把请求ADI报文中的字典值转换为本方业务系统的字典值;
  2. 请求第三方系统时把本方系统的字典值自动转换为第三方业务系统的字典值;
  3. 把第三方系统响应报文中的字典值转换为本方业务系统的字典值;
  4. 把ADI响应报文中的字典值转换为接口调用者需要的字典值。
    字典转换

六.报文加解密

  1. 对请求ADI的报文进行解密(支持RSA和SM2);
  2. 对请求第三方系统的报文进行加密(支持RSA和SM2);
  3. 对第三方系统响应的报文进行解密(支持RSA和SM2);
  4. 对ADI响应报文进行加密(支持RSA和SM2)。

七.报文签名验签

  1. 对请求ADI报文进行验签;
  2. 对请求第三方系统的报文进行签名;
  3. 对第三方系统响应的报文进行验签;
  4. 对ADI响应报文进行签名。

八.数据合法性验证

  1. 对POST、PUT请求ADI的json报文进行合法性验证(基于JsonSchema);
  2. 对第三方业务系统响应的json报文进行合法性验证(基于JsonSchema);
  3. 对GET请求ADI的参数进行合法性验证。

九.调用数据库存储过程

  1. 先把数据写入目标表,然后执行存储过程;
  2. 先执行存储过程,再执行sql查询语句;
  3. 对GET请求ADI的参数进行合法性验证。
    我们公司有些老系统使用的技术比较老(asp),不太方便开发新接口来接收其他系统的数据,只能依赖执行存储过程来处理接口数据。

十.定义异步执行策略

  1. 把策略设置为异步执行,使之满足特定场景的数据共享;
  2. 一般场景不推荐使用该策略,因为API数据共享的目的就是尽量保证数据的实时性,异步策略可能导致无法及时发现数据共享失败。

十一.定义前置执行策略

  1. 当一个接口有多个需要执行的策略时,可以把其中一个策略设置为前置执行,也就是说当且仅当这个策略执行成功时,才会执行后续策略;
  2. 使用场景:A系统要通过ADI平台发送业务申请数据给B系统,B系统要求先接收结构化数据,然后才能接收非结构化数据,此时可以定义一个接口(比如就叫申请数据发送接口),并且给这个接口定义两个执行策略(结构化数据发送策略、非结构化数据发送策略),把发送结构化数据的策略设置为前置策略即可。

十二.定义静默执行策略

  1. 当一个接口有多个需要执行的策略时,可以把其中一些策略设置为静默执行,所谓静默执行,是指该策略如果执行成功,那么不会把结果信息返回给调用者,但如果该策略执行失败,则会给调用者返回错误信息;
  2. 使用场景:A系统要通过ADI平台发送业务申请数据给B系统,B系统要求先接收结构化数据,然后才能接收非结构化数据,此时可以定义一个接口(比如就叫申请数据发送接口),并且给这个接口定义两个执行策略(结构化数据发送策略、非结构化数据发送策略),如果不设置静默策略,那么ADI会把两个策略的执行结果合并后返回给A系统,可能造成A系统难以解析ADI的响应报文,此时就可以把非结构化数据发送策略设置为静默执行。

十三.自动生成接口在线测试文档

  1. 接口配置完成后,将自动生成在线测试文档,无需PostMan等工具即可对接口进行测试;
  2. 接口文档使用Swagger生成。
    接口在线测试

十四.接口调用日志查询

  1. 每个策略的每次执行都会产生一条日志信息;
  2. 每条日志都可以抓取请求报文中的某个字段作为日志跟踪值(一般是某个业务的唯一标识字段,比如业务编号),方便后期快速查询定位日志。
    接口调用日志

十五.接口调用日志清理

  1. 可配置策略日志的清理模式,避免无效日志占用太多的存储空间;
  2. 指定只保留多少天以内的日志;
  3. 指定清理调用失败的日志;
  4. 指定清理测试阶段的日志;
  5. 指定清理调用成功,但是无有效响应数据的日志(比如轮询服务要查询某个系统的某个业务是否到达了某个指定进度,达到进度前的查询结果可能都是空的,那么可以指定清理这些日志)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/467355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 实现 YoloV7 人体姿态识别

1 OpenCV 环境的准备 这个项目中需要用到 opencv 进行图片的读取与处理操作,因此我们需要先配置一下 opencv 在 java 中运行的配置。 首先前往 opencv 官网下载 opencv-4.6 :点此下载;下载好后仅选择路径后即可完成安装。 此时将 opencv\b…

30基于非对称纳什谈判的多微网电能共享运行优化策略MATLAB程序

资源地址: 30基于非对称纳什谈判的多微网电能共享运行优化策略MATLAB程序资源-CSDN文库 参考文献: 《基于非对称纳什谈判的多微网电能共享运行优化策略》——吴锦领 仿真平台:MATLAB CPLEXMOSEK/IPOPT 主要内容: 主要做的是…

优思学院|精益生产为企业带来革命性转变的效益

企业的成长和发展需要不断的变革和创新,而精益生产则成为了这个时代的代名词。精益生产不仅仅是一个生产方式,更是一种革命性的转变,为企业带来了无限的效益。 什么是精益生产? 精益生产是一种基于持续改进的生产方式&#xff0…

基于matlab的混合波束成形仿真

一、前言 本示例介绍了混合波束成形的基本概念,并展示了如何仿真此类系统。 二、介绍 现代无线通信系统使用空间复用来提高散射体丰富的环境中系统内的数据吞吐量。为了通过通道发送多个数据流,从通道矩阵中导出一组预编码和组合权重。然后,可…

lammps教程:聚合物压缩,避免“bond atoms missing”

本文介绍聚合物的压缩方法。 lammps模拟聚合物体系时,最常见的一个错误是“bond atoms missing”,其中一个原因是建模方法不对。 这个原理在之前的专栏文章中已经详细介绍。 如果使用ms建模,聚合物的链会伸出到盒子外面,在导出data文件后&…

MindFusion.Diagramming for WinForms 6.8.6

您现在可以指定在修改项目时要显示的视觉效果。 2023 年 4 月 26 日 - 15:55新版本 特征 您现在可以指定在修改项目时要显示的视觉效果。新的 Opacity 属性允许您创建半透明的 DiagramItem。添加了新的 CopySelection 重载,它允许您复制项目列表而无需选择它们。您现…

OrbStack

OrbStack 是一个可以在 macOS 上快速运行 Docker 容器,和 Linux 虚拟机的工具,资源占用率低,高效,快速。 macOS 上的 Parallels Desktop 和 Docker Desktop 一直是饱受诟病,慢、重、资源消耗巨大。OrbStack 的出现就是…

goroutine和channel

进程与线程 进程就是程序执行在操作系统中的一次在执行过程,是系统进行资源分配的基本单位。 线程就是进程的一个执行实例,是程序的最小执行单元,是比进程更小的独立运行的单位。 一个进程可以创建多个线程,同一一个进程中的多…

如何在C中动态分配二维数组

在C语言中如何动态申请连续的二维数组。可以采用多申请一些指针,然后这一些指针分别指向后面数据区中对应的位置,如一个3*4的int类型数组,我们先申请大小为sizeof(int*) * 3 3 * 4 * sizeof(int)的一维数组设为arr。然后arr[0]存放指向arr …

OpenAirInterface通过docker build方式构建images

本文主要讲解如何通过build方式构建各个网元的image,因为直接pull的image无法对其进行更改,而build的镜像可以对其源代码进行编辑更改后生成镜像。 参考链接:OAI build iamges 1.获取正确的网络功能分支 此存储库仅包含教程和持续集成脚本…

有假币与求正数数组的最小不可组成和

一、编程题 1.有假币 链接:有假币__牛客网 (nowcoder.com) 居然有假币! 现在猪肉涨了,但是农民的工资却不见涨啊,没钱怎么买猪肉啊。nowcoder这就去买猪肉,结果找来的零钱中有假币!!&#xff…

爪哇项目maven项目的打包方式

大家好 ~ 前言 现在都是使用idea中maven插件来打包项目,出现了很多问题很多类或者方法、依赖没有打入到包中,发生了很多问题,因此此文章将基于idea中的maven插件打包。 概念 打包分为小包和大包两种概念: 小包:只打…

Conda虚拟环境的复制和迁移

Conda虚拟环境的复制和迁移 在本机复制Conda虚拟环境 conda create --name snapshot --clone myenv相同操作系统之间复制环境 方法一:requirements.txt 这个方法不推荐,因为只会导出你使用pip安装的依赖包,不会导出虚拟环境所依赖的包&am…

SQL应用题分析

SQL应用题的一般考点: 基本表的查询(单表、多表、嵌入、分组、排序)、向表中插入数据、更新数据、建立视图 关系代数替换sql,使用关系代数来进行查询 基本上就这几点 SQL基本表的插入、更新和建立视图都是死板的,只…

前端开发:CSS中@import指令详解

前言 在前端开发过程中,关于CSS的使用也是非常的,尤其是样式相关的设置等操作。作为前端开发者关于import指令都会有所了解,尤其是在导入CSS样式的时候会用到,但是刚入行不久的前端开发者对应import指令会有所陌生。那么本文就来分…

项目管理:我该怎么安排下属的工作

在刚开始做项目经理的时候,分配任务时会局限于这样的心理:以前我们都是平级的同事,现在我比他们高一个级别了,我说的话他们会不会听啊。 在这个阶段,大部分项目经理都缺乏自信,觉得在项目成员心中威望不足…

Linux shell编程 条件语句if case

条件测试 test命令 测试表达式是否成立,若成立返回0,否则返回其他数值 格式1: test 条件表达式 格式2: [ 条件表达式 ]文件测试 [ 操作符 文件或者目录 ][ -e 1.txt ]#查看1.txt是否存在,存在返回0 echo $? #查看是上一步命令执行结果 0成…

15天学习MySQL计划-存储过程变量判断循环游标函数触发器(进阶篇)-第九天

15天学习MySQL计划-存储过程/变量/判断/循环/游标/函数/触发器(进阶篇)-第九天 存储过程 1.介绍 ​ 存储过程是事先经过编译并存储是数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库…

SR常用数据集介绍

1.Download Link: 1.DIV2K: DIV2K Dataset 2.Set5:【实践与问题解决28】最全超分辨率(SR)数据集介绍以及多方法下载链接_超分辨率数据集_呆呆象呆呆的博客-CSDN博客 3.Set14:【实践与问题解决28】最全超分辨率(SR)数…

Java --- springboot2的静态资源配置原理

目录 一、静态资源配置原理 1.1、配置类只有一个有参构造器 1.2、资源处理的默认规则 1.3、欢迎页的处理规则 一、静态资源配置原理 springboot启动默认加载xxxAutoConfiguration(自动配置) springmvc功能的自动配置类,生效 Configuration(proxyBeanMethods …