DataLeap 数据服务平台主要助您将不同数据库中存储的数据(例如某张数据表),通过可视化配置方式快速封装成一个可供服务端消费的 API 接口,并提供此 API 接口的管理、运维和共享能力。
在进行数据服务的 API 开发前,您需做以下准备工作。
前置准备工作完成后,您便可开始创建数据服务 API,关键操作流程如下:
注册 MySQL 数据源,打通 MySQL 和数据服务平台之间的网络链路,将数据源注册到数据服务平台 > 数据源模块。
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
本实践中,以 Cloud MySQL 数据源类型的配置说明为例:
参数 | 说明 |
---|---|
基本信息 | |
数据源类型 | 下拉选择 Cloud MySQL 数据源类型。 |
数据源名称 | 数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100 个字符以内。 |
描述 | 对当前新建数据源的注释说明,方便后续管理和维护。 |
连接参数 | |
访问方式 | MySQL 数据源可通过 VPC 网络和公网两种访问方式。 说明 不同网络连接方式,需在数据库白名单中添加不同的白名单地址,详见1 使用前提。 |
MySQL 实例 ID | 输入火山引擎云数据库 MySQL 版的实例 ID。MySQL 实例创建方式详见创建 Cloud MySQL 实例。 |
MySQL 连接终端 ID/公网地址 | |
数据库名 | 数据库的名称。 |
用户名 | 输入有权限访问数据库的账号。 |
密码 | 输入账号对应的密码信息。 |
readTimeout | 数据服务平台对该数据源设置的读取超时时间。 |
maxIdleConn | 数据服务平台对该数据源设置的最大空闲连接数。 |
maxOpenConn | 数据服务平台对该数据源设置的最大连接数。 |
物理表是在线存储引擎中(如 MySQL/Doris/Oracle 等数据库)中的一张表。服务每次查询运行都需要使用物理表的元数据构造 DSL,因此目前将存储中表/字段信息注册到数据服务平台中以方便查看和管理。
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
配置项 | 说明 |
---|---|
安全等级 | 设置表安全等级,分为 L1-公开、L2-内部、L3-秘密、L4-机密 4 种安全等级。 |
*创建同名逻辑表 | 选择是否创建同名逻辑表。为提高创建效率,此处选择开启创建。 |
*逻辑表存储目录 | 指定同名逻辑表存放目录。 |
*逻辑表名称 | 设定对应逻辑表的名称信息。 |
物理表更多管理操作,详见“物理表管理”。
逻辑表是数据开发者在平台进行逻辑建模后产生的虚拟表,是物理表的一个映射。
通过逻辑表屏蔽底层存储细节,完成物理表字段类型转换、规范命名、备份容灾配置等。用户实际配置 API 时必须使用逻辑表,不支持直接使用物理表。
因上方创建物理表时,已开启创建同名逻辑表选项,此时您可直接前往逻辑表界面,进行查看对应的逻辑表信息。
更多详细逻辑表相关操作,详见“逻辑表管理”。
通过页面相关配置,基于逻辑表快速表生成 API。API 目前支持脚本式/向导式/原生式几种类型,可根据实际需要进行 API 的创建选择。
本实践中,以脚本式 API 创建为例说明。
在新建 API 之前,您需先建一个根文件夹,来存放 API 文件。
在上方导航栏中,单击 API 按钮,进入 API 开发界面,在左侧目录树上单击新建文件夹按钮,弹窗中输入文件夹名称信息,单击确定按钮,完成文件夹创建。
文件夹新建完成后,您便可开始新建 API。
单击左侧目录树上方新建 API 按钮,或鼠标 Hover 文件夹更多操作中新建 API 选项,进入新建 API 配置界面。
以脚本式 API 类型创建为例:
说明
脚本式 API 支持自行编写 API 的查询 SQL,该方式可满足高阶需求,支持选择同源多张逻辑表进行处理。其余更多 API 类型说明详见“4 开发 API”。
新建脚本式 API 相关参数说明如下表所示,其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
参数 | 说明 |
---|---|
基本信息 | |
*API 名称 | 输入 API 名称信息,API 名称需以字母、数字或下划线字符组成,30 个字符以内。如:doc_api_test |
*存储目录 | 下拉选择已创建的文件夹目录,用来存放创建的 API。 |
*最大 QPS | 配置该 API 允许的最大 QPS,默认为 100。 |
安全等级 | 设置 API 安全等级,分为 L1-公开、L2-内部、L3-秘密、L4-机密 4 种安全等级。 |
负责部门 | 可输入负责当前 API 管理的部门信息。 |
描述 | 输入 API 描述信息,方便后续维护和管理。 |
更多配置 | |
最大 limit | 正整数形式,输入 API 查询的最大 limit。 |
*报警模版 | 选择是否开启报警模板,开启后,平台将自动为 API 配置默认的报警规则,报警接收人为 API 负责人,您可根据实际情况,进行选择需开启的报警规则。 |
初始版本 | 初始创建时,默认为 V0 |
版本描述 | 请填写版本描述 |
新建 API 配置完基础信息后,单击保存即可进入相应类型 API 的开发页面。
脚本式 API,可以通过自定义 SQL,自行编写 API 数据的查询 SQL,实现更复杂的查询需求,支持选择同源多张逻辑表进行处理。
逻辑表选择
下拉选择需参与多表 JOIN 计算的逻辑表名称,支持选择同源多张逻辑表,最多 20 张。
编辑查询
在代码框中进行 API 对应的查询 SQL 开发,API 开发阶段,建议可全屏开发来编写 SQL 语句,目前支持的 SQL 类型为:
SQL 编辑:
直接编写普通 SQL 语句。您可以在一些简单的场景下使用该类型,如仅需对固定的数据表结构、过滤条件范围进行查询时,可直接用 SQL 编辑。
动态 SQL 编辑:
动态 SQL 必须以
包裹。您可以在复杂的场景下,如您需根据外部输入或其他变量参数动态改变 SQL 语句时;亦或是需要根据不同业务情况执行不同的 SQL 语句,来实现灵活的业务逻辑查询时,您便可用动态 SQL 语句来生成复杂的查询逻辑。return (<SELECT></SELECT>)
操作 | 说明 |
---|---|
运行 | 在非全屏页面,单击运行按钮后会切换到编辑器全屏页面,在全屏页面,单击运行按钮可解析请求/返回参数,并展现运行后的查询结果和查询日志。 |
解析请求参数 | 单击解析请求参数按钮后可将 SQL 中的 where 条件作为解析参数传入请求参数栏。 |
表字段 | 单击表字段按钮后打开表字段弹窗,表字段弹出显示选中的逻辑表的字段信息。 |
格式化 | 单击格式化按钮可将 SQL 格式化标准格式。 |
全屏显示 | 在非全屏状态下,单击全屏显示按钮会切换到编辑器全屏页面。 |
取消全屏 | 在全屏状态下,单击取消全屏按钮会切换到编辑器非全屏页面。 |
请求参数
脚本式请求参数可通过解析请求参数按钮,来自动解析 SQL 中 where 条件后的请求参数,单击解析按钮,可进入全面屏模式,进行自动解析。当然也支持您手动添加和校正参数,本实践中,查询不设置 where 过滤条件,即请求参数置为空。
更多请求参数配置详见4.1 脚本式。
返回参数
脚本式返回参数可通过单击运行按钮自动解析,也支持手动添加和校正参数,本实践中,查询将返回表所有字段数据。
更多返回参数配置详见4.1 脚本式。
高级配置
操作 | 说明 |
---|---|
返回结果格式 | 数据返回的结果格式,支持选择 JSON 和 JSONCompact 两种类型:
注意 该配置项在保存并发布当前版本后生效。对于已有下游调用的 API,请谨慎更改,因为可能会导致下游在使用数据时出现异常。 |
数据缓存时间 | 缓存策略为返回结果的缓存时间,一共有三种策略:
|
说明
脚本式 API 若要实现分页调用操作,可详见“2 脚本式 API 如何进行分页设置”。
API 开发配置完成后,您可通过测试能力,来查看 API 的逻辑是否正确。
更多测试操作详见6 测试 API。
API 测试无误后,您可将 API 发布至线上环境,以便您在不同环境中进行调用。
更多 API 发布操作详见7 发布API。
API 发布至线上环境后,可进入 API 详情界面,对 API 进行应用授权管理、报警配置等 API 运维操作。
单击右侧导航栏中的 API 详情按钮,进入 API 详情界面。
选择授权管理页签,并单击新增授权按钮,进入 API 应用授权配置窗口。
说明
进行 API 应用授权前,您需先在系统管理 > 应用管理中完成注册,并创建 **OAuth2.0(动态 token)**秘钥类型。创建应用操作,详见“应用管理”。
在应用授权配置窗口,完成以下信息配置:
参数 | 说明 |
---|---|
基本权限 | |
*应用名称 | 下拉选择允许调用 API 的应用名称,对应一个已创建成功的应用信息。若您还未创建应用,您可单击新建应用按钮,前往应用管理进行创建。新建操作详见“应用管理”。 |
标志符 | 应用的唯一标识,在应用管理创建时指定。 |
有效期 | 设定应用授权有效期限,新的到期时间=当前到期时间+续期天数,续期时会给 API 管理者和应用的申请者发送相应通知。您可下拉选择有效期天数。 |
应用方 | 输入应用方名称信息,可用于申请 API、授权或审批时方便明确应用方信息。 |
*最大 QPS | 设置应用调用 API 的最大 QPS,您可根据实际情况,自定义设置调用 API 时最大的 QPS,当调用的 QPS 达到最大值时,会触发限流。若不填或选择不限制,则默认不限流。 |
*调用负责人 | 下拉选择真正调用当前 API 的应用负责人。 |
调用优先级 | 下拉选择调用的优先级情况,数字越小,代表等级越高。 |
标签 | 您可以自定义标签,用于标识某一类授权,以便快速搜索区分。
|
授权描述 | 添加授权描述信息,可针对授权场景进行信息补充。 |
行列权限 | |
行级权限 | 设置调用的行级权限,您可针对请求参数做限制,比如限制只能访问某个请求参数的某几个值。支持添加多个行权限,各请求参数可以是“且”、“或”的关系。 注意 行级权限设置前,您需先添加对应的请求参数,如指标查询式 API 设置权限前,需先添加所需的维度字段。 |
列权限 | 列权限针对返回参数做限制,比如限制只能返回某列的参数信息。下拉选择返回参数字段列,支持选择多个。 |
应用授权信息配置完成后,单击右下角确认按钮,完成授权应用添加。
应用授权完成后,您便可在 API 调用工具(如:Postman)中,进行调用。
在 API 详情界面,切换至调用信息页签。
在调用信息中,获取调用地址。
【可选】如果授权的应用,其创建的密钥为动态密钥时,需先调用接口来动态获取 API 调用时所需的动态 Token 信息。动态获取 Token 信息调用示例如下:
curl -X POST \ -H 'user:username' \ -H 'env: $ENV' \ -H 'Content-Type: application/json' \ http://xxxx.xx.x.xxx:xxx/data_service/api/v2/api_service/token \ -d '{"AppKey": "you_app_key","AppSecret": "you_app_secret"}'
调用示例可在界面接口文档中获取:
参数说明:
参数 | 说明 |
---|---|
user | API 责任人用户名信息。 |
ENV | API 发布的环境信息。
|
Url | 默认调用地址,以接口文档中的显示为准。 |
AppKey | 输入当前已授权应用的密钥 AppKey 信息。可从应用管理 > 密钥管理界面获取: |
AppSecret | 替换应用管理中已创建的密钥 AppSecret 信息。 |
API 调用示例:
curl -X POST \ -H 'user:username' \ -H 'Content-Type: application/json' \ -H 'env: $ENV' \ http://xxxx.xx.x.xxx:xxx/invoker_engine/query_with_params \ -d '{"ApiID": "186xxxxxxxxx24","Option": [{"Id":100,"Val":0,"Val_":"$DPS_TOKEN"}],"Params": {}}'
参数说明:
参数 | 说明 |
---|---|
user | API 责任人用户名信息。非必填。 |
ENV | API 发布的环境信息。
|
Url | 获取调用说明栏中的调用 URL 信息,可根据实际情况进行替换实际调用链接。 |
ApiID | 输入当前已发布的 API ID 信息,在 API 详情中可获取。 |
$DPS_TOKEN | 替换应用管理中已创建的秘钥信息,或通过接口获取的动态 token 信息。 |
Params/Sql |
|
打开 API 调用工具(Postman),进行调用测试:
验证检查调用数据返回结果和原有 MySQL 表多表 JOIN 后的数据一致,即完成本次 API 调用实践。
后续,您便可在其他工具中,通过该 API 给下游数据应用的人员进行调用查询数据,提高数据可用性。