低代码平台中的数据连接方式(下)
1. 前文回顾
在本文的(上)篇中我们讲述了低代码平台中经典的基于单 API 通信的数据连接方式,以及围绕单 API 模式建设的一系列 “为了让业务方能以更低成本接入低代码平台” 的方式,包括数据映射、适配器、 API 代理等。
在(上)篇的结尾,我们提到基于单 API 通信的数据连接方式仍然依赖于 “现成的后端 API ”。也就是说,在这种模式下,如果后端现有的接口不能满足低代码应用的诉求,依然需要按照传统的模式由后端研发排期开发出供低代码应用使用的接口。
在这篇文章中,我们将围绕 “后端没有现成 API ” 的场景,介绍百度智能云的低代码平台爱速搭中的 API 编排、FaaS 以及数据库直连方案。
2. API 编排
API 编排本质上是用可视化的方式来编写后端代码,它可以用于不复杂的接口聚合及增删改查场景。在没有 “现成单个接口” 但是可以借助现有接口组合实现某项能力的情况下,API 编排可以帮助平台用户在无需传统后端开发介入的情况下利用现有的 API 资源组合出业务需要的单个接口。
在爱速搭中,API 编排的创建和使用过程如下:
在 “ API 中心” 的列表页面创建一个 “多接口聚合” API ,即 API 编排。 点击 “多接口聚合设计” 进入 API 编排设计界面,利用可视化编辑器进行 API 节点编排。 在页面中通过点选的方式为组件配置使用 API 中心的 API 编排。
下面我们来逐步对其进行详细说明。
2.1 创建一个 API 编排
在爱速搭的 API 中心,可以创建两种类型的 API ,一种是我们在(上)篇说过的 “单个 API ”,而另一种则是多接口聚合 API ,即 API 编排,如图 1 :
图 1 在 API 中心创建多接口聚合 API ( API 编排)
2.2 在可视化编辑器中进行 API 节点编排
API 编排在爱速搭中的编辑界面如图 2 所示,其中最基本的是 “发送 HTTP 请求” 节点,它的行为是根据用户配置,关于 HTTP 请求发送节点,在下一节的 API 编排实例中会有详细说明。
除了基本的 HTTP 请求外,它还提供了数据源 SQL 、JS 代码执行等 “原子” 级别的能力,用户可以自由组合这些能力来 “编排” 出新的供前端使用的接口。
图 2 爱速搭中的 API 编排界面
下面我们来看一个典型的节点编排。它实现的功能是通过给定的一对 AKSK 来换取临时的 access_token ,然后用换取到的临时 access_token 作为凭据调取人脸注册接口。
实现这个功能的关键节点有以下两个:
第一,通过给定的 AKSK 换取临时 Token 。在图 3 的 “获取 access_token ” 节点中配置了三个 “ query 转换” 字段,其中 “ grant_type ” 字段是接口规定的固定常量,而 client_id 和 client_secret 是接口提供方分配给调用方的固定账号-密码。基于这样的配置,爱速搭的 API 编排运行引擎会将这三个参数以 query 参数的形式附在请求 URL 上向接口服务发送请求,并将返回结果存储在指定的 “存入变量” accessToken 中,在后续的节点中可以通过 accessToken.xxx 的形式来获取到这一步返回的值。
图 3 根据接口要求组织 query 参数
第二,将上一步获取到的 access_token 附在 url 参数后作为下一步接口请求的鉴权凭据。在图 4 中分别配置了 “提交参数转换” 和 “ query 转换”,提交参数指的是请求 body 的内容,如图中的 image 字段,其值为 {{ input.image }} ,表示从前端输入中取 “ image ” 字段,而在 “ query 转换” 中配置了 access_token 字段的值为 {{accessToken.access_token}}, 表示从上一步缓存的中间变量 accessToken 中取字段 access_token,并将其附在 url 参数上。
此处需要注意的是右上角 “存入变量” 输入框配置的 output.data 字段,在爱速搭的 API 编排中,output 会被作为最终返回整个 API 编排返回的 response ,这里配置了 “存入变量” 为 output.data , 那么最终数据返回的时候,其格式会是{data: {...}, ...},其中 data 字段的值就是该接口返回的数据。
图 4 从前端输入和中间变量中获取所需的数据
“设置 status ” 和 “设置提示 msg ” 两个节点做的事情是返回数据的格式化,此处不再赘述。
类似这样的功能,在传统开发方式下通常需要由后端研发实现一个专用接口以供前端调用。但是基于 API 编排能力,则可以在无需编写任何代码的情况下实现这类简单的接口“聚合工作” 功能。
2.3 在页面中使用 API 编排
在上一步完成 API 编排后,我们需要在页面中使用编排好的 API ,才能产出完整的应用。
在爱速搭中,制作好的 API 编排会以单个接口的形式暴露给前端,我们可以通过在编辑器中点选的方式来使用这些 API 编排,如图 5 :
图 5 通过点选的方式将 API 编排作为表单提交接口
点击预览并拍照提交,可以观察到表单提交的接口和字段。
接口格式和单 API 类似,其格式为 /apicenterproxy/:apiId ,如图 6 ,当请求到达爱速搭后端服务时,API 编排的运行引擎会根据 URL 参数 apiId 来找到对应的 API 编排配置,并将其取出执行。
图 6 通过统一接口访问 API 编排
在图 7 中可以看到该表单提交了一个名为 image 的字段,它是一张 BASE64 编码的图片,在上文图 4 的编排中,可以通过{{ input.image }} 这样的语法来获取到该字段的值。
图 7 经过 BASE64 编码的图片可以通过{{ input.image }}字段获取到
执行完毕后,运行引擎会将各节点存储在 output 字段中的数据作为接口返回数据返回给前端,在图 4 中我们指定了接口返回数据的存储字段为 output.data , 那么整个 API 编排的接口返回中就会包含一个 key 为 data 的字段,其值为人脸注册接口的返回值,如图 8 :
图 8 指定的 data 字段,其值为人脸注册接口返回的数据
3. FaaS
FaaS( Function as a Service )通常的产品形态是提供一个入口,让使用者可以粘贴 / 上传按平台要求的格式编写好的源代码,并暴露一些触发器(其中以 HTTP 触发最为常见)。
在爱速搭中,FaaS 能力和 API 编排进行了整合并作为 API 编排的一类节点提供。
如图 9 ,可以在文本框内编写代码并保存,平台会将整个 API 编排作为完整接口提供给前端,当执行到 JS 代码节点时,运行引擎会取出这段代码并在沙箱环境中执行,然后将结果通过传入的 state 参数输出到中间变量。
图 9 往平台中添加外部数据源
4. 数据库直连方案
数据库直连方案包括数据源接入能力、建模能力、在低代码平台搭建的业务页面中进行数据访问三个重点。下面我们来逐个重点对其进行说明。
4.1 数据源接入能力
数据源接入能力,指的是将不同来源的数据库和低代码平台进行对接。通常是用户将数据库的账号密码等访问信息提交到低代码平台,低代码平台利用这些信息来连接数据库进行增删改查或更高权的 DDL 操作(需开放权限)。
在爱速搭中,数据库来源可分为外部数据源和内置数据源。
4.1.1 对接外部数据源
连接外部数据源在实际落地场景中是最常见的一种方式,将数据库连接所需的信息提供给平台后,平台可以使用这些信息连接到数据库进行增删改查或更高权限的 DDL 操作。
在爱速搭中,对接外部数据源的方式是是应用开发者将数据库地址、端口和账号密码提交到低代码平台,低代码平台在保证账号密码存储安全的前提下,使用应用开发者提供的账号连接到指定的数据库,并根据具体业务需求进行数据库操作。
图 10 展示了一个外部数据库是如何连接到爱速搭的。
图 10 往平台中添加外部数据源
在填写账号密码等配置项后,将原表的数据库字段和爱速搭中的数据模型进行映射。如图 11 中连接的外部数据源中有四个数据表,可以在这一步指定在平台中需要使用哪些表,以及原始字段名 - 平台使用的字段名的映射。
图 11 制定在平台中使用的表和字段映射
4.1.2 创建内置数据源
内置数据源,顾名思义就是应用 “内置” 的数据源。
在没有后端机器和研发人员的情况下,如果要创建一个全新的应用,使用内置数据源是一个不错的选择。在爱速搭中 “新增数据源” 时,将“数据库来源” 选项指定为 “内置数据源”,即可创建一个应用专属的内置数据源,如图 12 所示。
图 12 在爱速搭中创建一个内置数据源
这一操作的实际结果是在爱速搭的平台数据库中新建了一个应用专属的数据库,如图 13,可以在数据库列表中看到为应用创建的独立数据库(图中勾选的数据库)。
图 13 爱速搭中创建的内置数据源
4.2 建模能力
4.2.1 可视化模型编辑器
可视化模型编辑器提供了对数据模型(数据表)的可视化创建 / 修改能力,如图 14 ,应用开发者可以在可视化的 ER 视图中进行建表、创建表关联以及字段增删等操作。
除了数据库的基础字段,爱速搭还提供了一些具备自有逻辑的高级字段,如人员信息,部门信息等和平台组织架构信息绑定的字段。
图 14 可视化模型编辑器
4.2.2 同步模式
“同步模式” 指的是在上一节的可视化编辑器中修改数据库表并保存后如何 “同步修改” 到目标数据库的方式,目前爱速搭支持不同步、自动、手动三种同步模式,在不同步模式下,可视化编辑器可查看表结构,但不允许修改,自动和手动同步模式都可以修改表结构并同步至目标数据库,下面我们来对这几种模式进行分别说明。
4.2.2.1 不同步模式
不同步模式是最简单也是最基础的连接模式,低代码平台对模型只有数据行的增删改查权限,没有建表、修改表结构等高级权限。其研发实现成本以及和旧有数据对接的成本最低,通常在低代码数据模型体系的建设中,都会以不同步模式作为首期的切入和落地点。而在一些偏数据报表场景的平台中,只实现数据的 “读” 也已经 “够用” 了。
4.2.2.2 自动同步模式和手动同步模式
自动同步和手动同步两种模式,指的都是将对表结构的更改 “同步” 到目标数据库。
自动和手动同步模式都会在点击保存时通过新旧数据模型的 diff 来产出待执行的 SQL 语句(在爱速搭中是借助 TypeORM 框架的能力来产出 diff SQL),而两者的区别在于自动同步会在保存的时刻直接同步修改目标数据库的表结构,而手动同步模式则仅生成 SQL 语句,不自动执行。
手动同步模式的存在是为了兼容多数大型企业数据库上线的模式,通常在大型企业(包括百度)数据库都会由 DBA 团队统一管理维护,一切涉及 DDL 的操作都需要交由 DBA 团队审核上线,在这种模式下可以将中间 SQL 拷贝出来交由 DBA 团队审核上线后再在平台点击 check 确认。
下面以自动同步模式为例说明数据库的变更:
在数据模型中新增一个字段并保存,如图 15 :
图 15 在爱速搭中新增数据表字段
用客户端连接到数据库,可以看到数据表中多了一个字段,如图 16 :
图 16 数据表中新增字段
5. 在低代码平台搭建的业务页面中进行数据访问
在数据模型接入到平台后,低代码平台必然需要提供一些业务页面与数据模型连接的方法,才能够让业务将这些数据 “用” 起来。
爱速搭目前提供了两种页面与平台数据模型连接的方案,一种是通过特定组件(模型组件)来连接,另一种是在 API 编排中使用数据访问节点,再由页面调用相应的 API 编排接口来实现数据连接。
下面我们来详细介绍这两种方式。
5.1 通过专用的“模型组件”来连接数据模型
爱速搭提供了两种专用于连接数据库的前端组件, “模型列表” 和 “模型表单” 。这类组件可以与某个数据模型进行绑定,并根据模型的字段类型自动生成相应的视图。
5.1.1 模型表单
这里同样以一个简单的例子说明模型表单的使用。
在数据模型管理界面建立一个数据模型(对应一张数据库表),字段如图 17 所示 :
图 17 创建一个包含“物资编号”,“备注”两个主要字段的数据模型
在页面编辑器的 “平台” 组件中,我们可以向页面中拖拽一个 “模型表单” 组件并将其和上一步新增的数据模型点选绑定,如图 18 :
图 18 在页面中使用模型表单组件
点击“确认”后,模型表单组件会根据数据模型的字段类型自动生成响应的填写表单项,如此处模型中“物资编号”字段是单行文本,而“备注”字段是多行文本,模型表单组件内生成了一个单行文本框和一个多行文本框,如图 19 : 图 19 模型组件根据数据模型字段类型自动生成填写界面 在页面填写一份数据,提交保存,如图 20 : 在 “数据管理” 处可以看到刚刚提交的数据,如图 21 : 图 21 在应用的“数据管理”界面看到查看提交的数据
图 20 使用上一步自动生成的界面提交一条数据
5.1.2 模型列表
模型列表的使用方式和模型表单类似,也是通过拖拽绑定数据模型的方式来使用。它提供了完整的增删改查能力,如图 22 :
图 22 模型列表组件
5.2 通过 API 编排节点访问数据模型
如果希望在其他组件中也使用数据模型中的数据,则需要用 API 编排中的节点实现 。
爱速搭在 API 编排中提供了两种类型的节点专用于访问平台接管的数据模型,分别是 SQL 节点和数据库增删改查节点。
在 SQL 节点中,可以编写 SQL 语句对数据库进行查询,如图 23 :
图 23 在 SQL 节点中编写 SQL 语句进行数据查询
而数据库增删改查系列节点则提供了无需编写代码对数据模型进行操作的能力,如图 24 :
图 24 可视化的增删改查配置
另外,在 “ JS 代码” 节点中以 FaaS 方式编写 node 代码也可以进行数据库访问。
6. 总结
动态网页的产生标志着互联网从 1.0 时代到 2.0 时代的飞跃。时至今日,前端开发人员 90% 的工作都围绕着页面动态数据的处理进行,而 “与后端数据的连接” 则是开发过程中前后端研发沟通问题产生的重灾区。
针对后端设施的不同成熟度,百度智能云的低代码平台爱速搭实现了单 API 、 API 编排、 FaaS 、数据库直连等多种数据连接方式,许多原本需要后端研发开发上线的需求点 一一 如数据格式对齐,新增特定数据的获取接口等,都可代之以爱速搭中可视化配置的方式来实现,在实际场景中有效地降低了前后端研发和沟通成本。
- - - - - - - - - - END - - - - - - - - - -
点击阅读原文,了解低代码平台爱速搭更多内容
传送门