1. 概述编辑
1.1 版本说明
FineDataLink 版本 | 功能变动 |
---|---|
V1.5 | 数据来源中的数据源类型支持 RestAPI |
4.0.10 | RestAPI交互优化 |
1.2 应用场景
出于安全考虑,有时不允许直接访问数据库,而是以 API 的形式对外提供数据。
此时用户需要通过 API 接口将数据取出并将其存放至对应的数据库中。
1.3 功能说明
FineDataLink 支持通过 RestAPI 接口进行取数,本文将介绍如何在「数据同步」节点中通过 API 接口取数到指定数据库。
内容 | 说明 | |
---|---|---|
A | 请求方法 | FDL 支持GET和POST两种请求方式。 |
B | 接口地址 | 需要调用接口url |
C | 请求参数 URL 传参(Query参数) |
|
D | Authorization 认证类型 |
|
E | Headers 请求参数 | Headers中选择格式,Body中联动
Body中选择格式,Headers中联动
|
F | Body 请求内容 | 注:选择POST请求方式时展示。 Body中支持格式选择,TEXT、JSON、XML body 内容写法如下:
格式为:GET:"a=123&b=456" POST:{"a":123,"b"=456} |
D | 响应内容如果是JSON格式,可进行后续的处理 | 为空默认解析首层节点,可用「父节点.子节点」的格式自定义解析层级,例如: 一层:store;两层:store.book;三层:store.book.author 详情参见本文第四节。 |
2. 前提条件编辑
在使用 RestAPI 接口进行取数时,可以提前用 Postman 或者其他 API 调试工具进行测试,确保 API 的可用性。
关于接口文档相关内容,详情参见:RestAPI入门、RestAPI专题应用
3. 操作步骤编辑
我们使用简道云的查询多条数据接口,来对表单中的数据进行查询,示例接口为https://api.jiandaoyun.com/api/v4/app/62e9e1c00a99380008a3ccd2/entry/62e9e20f49a9e700085d5e08/data
接口信息详情参见:查询多条数据接口
3.1 创建任务
登录 FineDataLink,进入数据开发节点,创建一个 ETL 任务,并将其命名为「api」,如下图所示:
将「数据同步」节点拖到设计界面,点击该节点打开设置界面,如下图所示:
3.2 API取数
1)数据源类型选择 RestAPI,填写 API 地址:https://api.jiandaoyun.com/api/v4/app/62e9e1c00a99380008a3ccd2/entry/62e9e20f49a9e700085d5e08/data
验证方式选择「Token」,并输入Token「Btu3skup52lmoon9yQAZWGEcOPCYSRDE」;选择请求类型为「POST」,如下图所示:
查看接口文档,请求方式为 POST,请求参数默认是body,因此可以将下面几个参数放入body中,同时接口使用的是 application/json的body类型格式。
比如想要取出 data 这个 JSON 数组,并且只取前 5 条数据。
首先选择 Body,设置为 JSON 格式,此时Headers 中会自动显示为 {"Content-Type":"application/json"}格式,因为我们给出的 API 接口已经定义了请求参数 limit(查询的数据条数,1~100,默认10),所以可以直接使用该请求参数,在请求参数中填入:{"limit":5},如下图所示:
此时点击数据预览,此时即可看到取出的数据,如下图所示:
若只想要取出 JSON 数组中 data 数据,可以输入 JSON 路径「data」,如下图所示:
即可查看到取出的数据,如下图所示:
3.3 将数据存入数据库
数据源类型选择 MySQL,数据连接选择「FDLdemo」,目标选择自动建表,表名称为 apitongbu,直接将数据写入目标表,如下图所示:
在字段映射中可以查看到字段写入数据库前后的信息,如下图所示:
点击「保存并运行」,出现执行成功信息即表示抽数成功,如下图所示:
节点运行成功后,可以看到已经将 API 数据取到 MySQL 数据库,如下图所示:
3.4 示例参考
示例详情参见:http://demo.finedatalink.com/ 中 「功能示例>步骤流>数据同步」下数据源类型为RestAPI-示例一和数据源类型为RestAPI-示例二。
4. 返回值处理说明编辑
接口数据返回值如果是 JSON 格式,想要取出指定的 JSON 数组,可以使用「返回值处理」直接解析 JSON 数据。
以 http://fine-doc.oss-cn-shanghai.aliyuncs.com/book.json 为例。
3.1 默认返回值
API 取数默认返回的结果将包括所有对象,同时解析首层的节点
即返回 store、store.book、store.bicycle、store.bicycle.color、store.bicycle.price 数据。
3.2 指定返回值
可以填写自定义的 JSON 路径控制只返回结果中的单个 JSON 对象或者 JSON 数组
使用「父节点.子节点」的格式自定义解析层级,例如: 一层:store;两层:store.book;三层:store.book.author
例如想要取出 store 对象中 book 数组数据,可以在路径中输入:store.book,可以获取到 book 数组下的所有数据,如下图所示:
例如想要取出 store 对象中的数据,可以在路径中输入:store,可以获取到 store 对象下的首层节点的数据:book、bicycle、bicycle.color、bicycle.price,如下图所示: