通过创建API数据源能够实现Dataphin向API请求业务数据或向API请求写入数据。本文为您介绍如何创建API数据源。
权限说明
仅支持拥有新建数据源权限点的自定义全局角色和超级管理员、数据源管理员、板块架构师、项目管理员系统角色创建数据源。
操作步骤
在Dataphin首页,单击顶部菜单栏管理中心 > 数据源管理。
在数据源页面,单击+新建数据源。
在新建数据源页面的半结构化存储区域,选择API。
如果您最近使用过API,也可以在最近使用区域选择API。同时,您也可以在搜索框中,输入API的关键词,快速搜索。
在新建API数据源页面中,配置相关连接数据源参数。
配置数据源的基本信息。
参数
描述
数据源名称
命名规则如下:
只能包含中文、英文字母大小写、数字、下划线(_)或短划线(-)。
长度不能超过64字符。
数据源编码
配置数据源编码后,您可以在Flink_SQL任务中通过
数据源编码.表名称或数据源编码.schema.表名称的格式引用数据源中的表;如果需要根据所处环境自动访问对应环境的数据源,请通过${数据源编码}.table或${数据源编码}.schema.table的变量格式访问。更多信息,请参见Dataphin数据源表开发方式。重要数据源编码配置成功后不支持修改。
数据源编码配置成功后,才能在资产清单的对象详情页面进行数据预览。
Flink SQL中,目前仅支持MySQL、Hologres、MaxCompute、Oracle、StarRocks、Hive、SelectDB、GaussDB(DWS)数据源。
数据源描述
对数据源的简单描述。不超过128字符。
数据源配置
选择需要配置的数据源:
如果业务数据源区分生产数据源和开发数据源,则选择生产+开发数据源。
如果业务数据源不区分生产数据源和开发数据源,则选择生产数据源。
标签
您可根据标签给数据源进行分类打标,如何创建标签,请参见管理数据源标签。
配置数据源与Dataphin的连接参数。
说明通常情况下,生产数据源和开发数据源需配置为非同一个数据源,以实现开发数据源与生产数据源的环境隔离,降低开发数据源对生产数据源的影响。但Dataphin也支持配置成同一个数据源,即相同参数值。
参数
描述
URL地址
请填写API请求的URL地址。
认证方式
请根据API的认证方式进行选择。
Basic Auth
用户名:填写API的用户名。
密码:填写API密码。
阿里云appKey auth
AppKey:填写API的AppKey。
AppSecret:填写API的AppSecret。
None:API无认证。
API Key
Key:填写API Key认证方式的键。
Value:填写API Key认证方式的值。
添加至:将API Key添加至API请求体参数Parameters、Headers、Body中的其中一个。
Bearer Token:填写Token令牌信息。该信息将以
Authorization: Bearer {token}的形式添加至API的Headers中进行请求。OAuth2.0:填写Token前缀、Access Token并配置下方的Access Token获取配置。
Token前缀(非必填):填写Token前缀,默认为
Bearer,支持为空。Access Token:填写Access Token获取配置的返回结果中的Access Token的JSON路径,支持多级,例如
data.access_token。
Access Token获取配置
说明仅当认证方式选择OAuth2.0时,支持配置此模块参数。
请求方式:可选择POST或GET,默认为GET。
Token URL:输入Token的请求地址,格式为
https://example.com/oauth/token。客户端ID:输入客户端的ID。
客户端密钥:输入客户端的密钥。
客户端认证:可选择在请求头中发送基本认证信息或在请求体中发送客户端凭证,默认为在请求头中发送基本认证信息。
在请求头中发送基本认证信息:在HTTP请求中直接通过
Authorization头字段发送基本认证信息。基本认证的基本格式为Authorization: Basic {credentials},其中{credentials}是经过Base64编码的用户名和密码。在请求体中发送客户端凭证:将客户端认证信息发送至请求体中,kv形式为
client_id、client_secret。
高级配置
说明仅当认证方式选择OAuth2.0时,支持配置此模块参数。
请求参数:可填写多个请求Token需要的额外参数,默认为空。当此处填写的参数与上方认证自动添加的参数冲突时,以此处填写的参数为准。
参数名称:仅支持英文字母大小写、数字、下划线(_)和短划线(-),不超过256个字符。
添加到:可选Parameter、Header、Body,默认为Parameter。仅当请求方式为POST时,才可选择Body。
连接测试:单击连接测试后,系统自动对Token URL、客户端ID、客户端密钥、客户端认证进行校验,连接测试完成后,可单击展开查询结果,查看格式化后的JSON。
高级设置
连接重试次数:当连接API失败时,将自动重试连接,直到达到设定的重试次数。若达到设置的重试次数仍未连接成功,则判定为连接失败。
单击确定,完成API数据源的创建。
Dataphin外部API对接说明
核心能力说明
API数据源核心能力如下,详细参数配置请参见上文。
能力 | 说明 |
认证方式 | 当前支持Basic Auth、阿里云AppKey Auth、API Key、Bearer Token、OAuth2.0、签名认证。 |
请求协议 | 支持HTTP和HTTPS协议,优先推荐使用HTTPS协议保障数据传输安全。 重要 目前可对接HTTP以及HTTPS的API,但HTTPS仅支持忽略证书的API,不支持强制要求使用证书的API。 |
请求方式 |
|
分页API(循环调用) | 支持页码、偏移量、游标方式的循环接口。 |
不同API认证方式对应的API数据源配置
以下是支持接入的API认证方式、核心参数及使用说明,包含参数定义、配置规则、使用场景。
简单来说,Basic Auth、阿里云AppKey Auth为专属场景;API Key、Bearer Token为通用场景;OAuth2.0适用于需授权的复杂场景;None适用于公开接口。
None(无认证)
核心说明
无需任何认证信息即可调用API,适用于公开可访问的接口(如公开查询、匿名访问的基础接口),或接口本身通过IP白名单、业务逻辑做权限控制的场景。
配置参数
无需配置任何认证参数,直接调用API即可。
Basic Auth(基本认证)
核心说明
基于HTTP基础认证协议的简单认证方式,用户名和密码将通过Base64编码后置于请求头(
Authorization: Basic <编码串>)中传输,建议仅在HTTPS协议下使用,避免明文泄露风险。必选配置参数
参数名
说明
配置示例
用户名
服务端分配的基础认证用户名(通常为字符串,支持英文字母大小写、数字和特殊字符)。
api_user_01
密码
服务端分配的基础认证密码,需与用户名配对使用。
e89s76d9@2026
阿里云AppKey Auth(阿里云专属认证)
核心说明
阿里云开放平台标准认证方式,基于AppKey和AppSecret进行签名验证(不同阿里云产品签名规则略有差异,通常会对请求参数、时间戳、非空等进行加密签名,签名部分详情请参见离线集成API输入及输出组件对接说明),适用于调用阿里云各类开放API(如OSS、RDS、短信服务等)。
必选配置参数
参数名
说明
配置示例
AppKey
服务端分配的基础认证用户名(通常为字符串,支持英文字母大小写、数字和特殊字符)。
api_user_01
AppSecret
服务端分配的基础认证密码,需与用户名配对使用。
e89s76d9@2026
API Key(密钥认证)
核心说明
通过自定义的Key-Value键值对进行认证,支持将密钥放在请求参数(URL)、请求头(Header)或请求体(Body)中传输,是通用性极强的认证方式,适配多数自研或第三方API。
必选配置参数
参数名
说明
配置示例
Key
认证密钥的标识名(由API提供方定义),如
api-key、app-key、token-id。api_key
Value
与Key配对的认证值,为服务端分配的唯一密钥,请妥善保管。
789d87s6a987d6s9876d987s6987d
可选添加至
指定Key-Value的传输位置,可选择:
Parameter:拼接在URL参数中,例如
https://api.xxx.com?api_key=789d87s6...\。Header:放在请求头中,例如
api_key: 789d87s6...。Body:放在POST请求体中。
Header
Bearer Token(令牌认证)
核心说明
基于HTTP Bearer令牌的简易认证方式,Token直接放在请求头(
Authorization: Bearer <令牌值>)中传输,适用于单次或短期有效的令牌认证场景(如临时访问令牌)。必选配置参数
参数名
说明
配置示例
Token
服务端颁发的Bearer令牌值,通常为字符串(如JWT、随机字符串),需确保令牌在有效期内。
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
OAuth2.0(授权码认证)
核心说明
工业标准的授权认证协议,需先通过配置获取Access Token,再携带Token调用目标API,适用于需用户授权、多端访问的场景(如第三方平台对接、用户态API调用)。
以离线集成为例,目前Dataphin调用逻辑为,每次请求目标API前都会获取Access Token,再携带Token调用目标API。
必选配置参数
参数名
说明
配置示例
基础配置
Token前缀
拼接在请求头中Token的前缀(通常为
Bearer,部分平台为Token或OAuth)。Bearer
Access Token路径
获取Access Token的接口返回中。Access Token值获取方式如下,例如返回结果为:
{ "access_token": "access_token_return", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "d68297697d37d97197d7a0c986f9d77989118912" }则填写
access_token。access_token
Access Token获取配置
请求方式
获取Token的HTTP请求方法(支持GET/POST,主流为POST)。
POST
Token URL
服务端提供的获取Access Token的接口地址。
https://oauth.xxx.com/token\客户端ID
服务端分配的应用唯一标识(Client ID)。
client_123456789客户端密钥
服务端分配的应用密钥(Client Secret),密钥需保密,请妥善保管。
secret_987654321客户端认证(非必选)
发送客户端ID/密钥的方式,可选择:
请求头:放在
Authorization头中(Basic Auth格式)。请求体:放在Token请求的Body参数中。
请求头
获取Token的其他请求参数(非必选)
获取Token时需额外携带的参数,支持放在Parameter(URL)或Header中。例如,
grant_type=client_credentials或scope=read_write。Parameter:
grant_type=client_credentials
接口要求
数据读取接口
针对数据读取接口的数据结构,仅支持单层值类型的JSON对象结构,禁止在单条记录的字段值中包含数组(Array)类型,具体规范如下:
支持的标准数据结构(合规)
单条用户记录的所有字段值需为字符串、数字、布尔值等基础类型,嵌套对象内的字段值也需遵循此规则(支持多层嵌套对象)。
//支持读取分页数据,接口返回必须包含分页信息page_no、page_size { "code": 200, "msg": "请求成功", "request_id": "req-20260228001", // 唯一请求ID(排查问题用) "data": [{ "user_id": 10001, "user_name": "张三", "user_phone": "13800138000", "user_email": "zhangsan@example.com", "user_hobbies": { "sports" : "羽毛球、乒乓球",// 支持多层嵌套对象读取 "instrument" : "吉他" }, "create_time": "2026-02-28 10:00:00" },{ "user_id": 10002, "user_name": "李四", "user_phone": "13800138001", "user_email": "lisi@example.com", "user_hobbies": { "sports" : "篮球", "instrument" : "钢琴、二胡" }, "create_time": "2026-02-28 10:00:00" }], "page_no": 1, // 当前页码,分页接口必须包含,若非分页接口则无需该字段 "page_size": 10, // 每页条数,分页接口必须包含,若非分页接口则无需该字段 "total": 23, // 数据总条数,非必须 "pages": 3, // 总页数,非必须 }禁止的异常数据结构(不合规)
单条记录中任意字段(含嵌套对象内字段)的值不得为数组(Array)类型,以下结构不符合对接要求,无法正常解析。
{ "code": 200, "msg": "请求成功", "request_id": "req-20260228001", "data": [{ "user_id": 10001, "user_name": "张三", "user_phone": "13800138000", "user_email": "zhangsan@example.com", "user_hobbies": { "sports": ["篮球"], // 字段值为数组,禁止 "instrument": ["钢琴", "二胡"] // 字段值为数组,禁止 }, "create_time": "2026-02-28 10:00:00" }] }
数据写入接口
针对数据写入接口的数据结构,仅支持单层值类型的JSON对象结构,禁止接收嵌套对象、数组类型的字段值,具体规范如下:
支持的标准数据结构(合规)
单条用户记录的所有字段值需为字符串、数字、布尔值等基础类型,不支持嵌套对象及数组。
[{ "user_id": 10001, "user_name": "张三", "user_phone": "13800138000", "user_email": "zhangsan@example.com", "create_time": "2026-02-28 10:00:00" },{ "user_id": 10002, "user_name": "李四", "user_phone": "13800138001", "user_email": "lisi@example.com", "create_time": "2026-02-28 10:00:00" }]禁止的异常数据结构(不合规)
单条记录中任意字段的值禁止为嵌套对象、数组类型,以下结构不符合对接要求,无法正常解析。
[{ "user_id": 10001, "user_name": "张三", "user_hobbies": ["篮球", "钢琴"], // 禁止:数组类型 "user_info": { // 禁止:嵌套对象类型 "phone": "13800138001", "email": "zhangsan@example.com" }, "create_time": "2026-02-28 10:00:00" },{ "user_id": 10002, "user_name": "李四", "user_hobbies": ["篮球", "钢琴"], // 禁止:数组类型 "user_info": { // 禁止:嵌套对象类型 "phone": "13800138002", "email": "lisi@example.com" }, "create_time": "2026-02-28 10:00:00" }]
离线集成API输入及输出组件对接说明
离线集成为API数据源的主要使用场景,在输入和输出场景上,支持的能力及要求存在些许不同。API输入/输出组件配置详情请参见:
一、可支持API签名认证(集成场景使用)
API 签名是一种强安全的身份校验机制,API 签名通过对请求关键信息(如请求参数、时间戳、随机数、密钥)进行哈希运算生成签名串,服务端使用相同规则重新计算签名并比对,防止请求篡改、重放攻击。它可独立使用,也可叠加在上述其他认证方式之上,提升接口安全性。若服务端API有签名要求可参考这部分内容。
必选配置参数
以下参数均用于生成签名字符串。
参数名 | 说明 | 配置示例 |
签名名称 | 签名在请求中的参数名/Header名,服务端据此识别签名。 |
|
签名位置 | 签名串的传输位置,支持:
| Params |
生成函数 | 签名的哈希算法,支持:MD5HEX、HMAC_MD5、SHA1HEX、HMAC_SHA1、SHA256、SHA256HEX、HMAC_SHA256、SHA512HEX、HMAC_SHA512。 | MD5HEX |
密钥 | 用于签名计算的密钥(与服务端约定,需严格保密) |
|
拼接内容 | 生成签名前的原始字符串拼接规则,支持:
| 自定义 |
二、当API用于读取数据时(API输入组件)
必要参数
参数名 | 说明 | 配置示例 |
请求方式 | API输入组件(API Reader)支持GET和POST。 | GET |
请求次数 | 支持单次请求和多次(循环)请求。 | 多次请求 |
多次(循环)请求:分页循环
针对单次请求无法返回全量数据的 API(例如分页接口、滚动查询接口),支持自动循环调用能力,通过页码/偏移量循环或游标循环两种模式,持续发起请求直至满足终止条件,自动聚合全量数据,适配各类批量数据拉取场景。
页码/偏移量循环
适用于标准分页接口,接口通过
页码(page)+每页条数(size),或偏移量(offset)+每页条数(limit)作为入参,返回指定页数据的场景(例如page=1&size=100、offset=0&limit=100)。参数名
说明
配置示例(page+size 分页)
配置示例(offset+limit 分页)
请求参数
选择循环入参的传输位置(仅Params/Body)+ 具体循环参数名。
位置:Params
参数名:
page位置:Params
参数名:
offset请求起始值
循环参数的初始值。
1(page从1开始)
0(offset从0开始)
请求步长
每次循环后参数的递增幅度(需与接口每页条数匹配)。
1(每页100条,page每次 + 1)
100(每页100条,offset 每次 + 100)
终止条件
循环停止的判断规则:
支持返回参数、请求参数、常量、请求次数比较。
规则:返回参数
current_page= 常量10(拉取10页后终止,此处条件灵活配置)
规则:返回参数
has_more= 常量false(无更多数据时终止,此处条件灵活配置)
游标循环
适用于高并发/大数据量接口,接口通过上一次请求返回的
游标值(cursor)作为下一次请求入参,避免页码分页的 “数据漏查/重复” 问题(如滚动日志、实时订单拉取)。参数名
说明
配置示例
请求参数
选择循环入参的传输位置(Params//Body)+ 具体游标参数名
位置:Params
参数名:
next_cursor游标参数
定义下一次请求的游标值来源:从本次请求的返回参数中提取(支持 JSON 路径)
返回参数 +
data.next_cursor请求起始值
首次请求的游标初始值(接口约定的 “初始游标”,如 0,默认为0)
0
终止条件
循环停止的判断规则:
常用「返回参数游标值 = 常量(空 / 0)」或「返回数据为空」
规则:返回参数
data.next_cursor= 常量 ``(空字符串)
多次(循环)请求:参数遍历循环
该模式基于固定的参数值列表逐一遍历,每次请求将列表中的一个值作为指定入参传入API,直至列表所有值遍历完成后终止。适用于批量查询固定维度数据的场景(例如按城市、部门、产品ID批量拉取数据),支持手动填写参数列表和API自动获取参数列表两种方式。
参数层级 | 参数名 | 详细说明 | 配置示例 |
循环列表配置 | 获取方式 | 可选择
| 手动填写 |
手动填写模式 | 参数值列表 | 当选择手动填写时,输入需遍历的参数值,换行分隔单个值。 | 101 102 103(代表遍历北京、上海、广州的城市ID) |
API获取模式 | 列表获取API配置 | 当选择API获取时,需配置前置API的请求地址、请求方式、认证方式、参数,以及参数值提取路径(支持 JSON路径),系统会先调用该 API 获取列表,再逐一遍历。 | 前置API: 提取路径: |
API模式仅支持无认证的API。
三、当API用于写入数据时(API写入组件)
参数名 | 说明 | 配置示例 |
请求方式 | API输出组件(API Writer)仅支持POST。 | POST |
请求次数 | 仅支持单次请求。 | 无需配置,默认。 |
请求的数据结构 | 请求传递的JSON数据的格式。
| 单条数据 |