You need to enable JavaScript to run this app.
导航
Rest_API 数据源使用动态 Token
最近更新时间:2025.04.03 15:49:56首次发布时间:2025.04.03 15:49:56
我的收藏
有用
有用
无用
无用

本实践将为您介绍通过 DataSail 数据集成 Rest_API 数据源,使用动态 Token 鉴权能力调用取数,将数据写入 MySQL 中。

1 实践背景

随着企业数字化转型加速,数据量急剧增长且来源日益多样化。在业务场景中,通常采用 OpenAPI 方式进行取数验证,部分 OpenAPI 开启了动态 Token 的验证方式,您需通过 Refresh Token 方式定期获取动态 Token 信息。
在本次实践中,我们通过 Shell 任务获取动态 Token 信息,再将该信息传入下游数据集成任务中,来配置 Rest_API 到 MySQL 数据源通道任务,将 OpenAPI 中查询到的数据,传输至 MySQL 数据源库表下,进行深入分析。

2 使用前提

已创建合适资源规格的独享数据集成资源组,并将其绑定至创建成功的 DataLeap 项目下。购买操作详见资源组管理,项目绑定操作详见数据集成资源组

3 关键操作步骤

  1. 4 新建数据集成数据源
    新建数据集成任务运行所需的 Rest_API 和 MySQL 数据源。
  2. 5 Shell 任务
    通过 Shell 任务获取动态 Token 信息,并将该信息输出传递给下游数据集成任务使用。
  3. 6 数据集成任务
    数据集成任务接收上游 Shell 任务传递的 Token 参数,并配置 Rest_API2MySQL 任务,将 API 中的数据写入到 MySQL 中。
  4. 7 运维中心数据回溯
    在完成 Shell 任务与集成任务的配置之后,把任务都提交发布到运维中心,并进行数据回溯操作,以此验证上下游数据的传参场景。
  5. 8 验证 API 数据入库结果
    新建 MySQL 类型的临时查询任务,来验证数据进入 MySQL 的最终结果。

4 新建数据集成数据源

新建数据集成任务运行所需的 Rest_API 和 MySQL 数据源,具体操作如下:

  1. 登入 DataLeap 控制台

  2. 选择具体项目后进入数据开发 > 数据源管理 > 自定义数据源,进入自定义数据源管理页面。

  3. 单击右上角新建数据源按钮,进入新建数据源页面。
    Image

  4. 依次完成以下数据源注册信息配置:

    • 配置 Rest_API 数据源

      参数

      说明

      数据源类型

      下拉可选 Rest_API 数据源类型。

      接入方式

      目前仅支持公网的接入方式。

      数据源名称

      数据源的名称,可自行设置。
      仅支持中文、英文、数字、“_”,100个字符以内,如 doc_rest_api

      数据源描述

      数据源的描述信息。
      建议填写数据源特性、用途等关键信息,以便后续数据源管理和使用。

      REST_API参数配置

      API Url

      输入源端 API Url 链接地址。

      默认请求头

      默认的请求头格式,例如:{"Autzzzzzion":"Bexxxxet-toxxxn-1"},没有时可不填写。

      验证方式

      REST_API数据源注册时,目前支持以下三种验证方式,您可根据实际场景选择鉴权模式:

      • No auth:源端API没有开启鉴权方式。
      • Basic auth:API开启了用户名和密码的鉴权方式,需另外填写以下信息:
        • 用户名:输入有数据库权限的账号名称。
        • 密码:输入对应账号的密码信息。
      • Token auth:API开启了Token的鉴权方式,您需要输入具体的 Token信息:
        • Token:输入可以验证通过的Token值信息。

      此处无验证方式时,可选择 No auth。

    • 配置 MySQL 数据源

      参数

      说明

      基本配置

      数据源类型

      MySQL

      接入方式

      火山引擎 MySQL

      数据源名称

      数据源的名称,可自行设置,仅支持中文,英文,数字,“_”,100个字符以内。如 doc_mysql

      参数配置

      RDS 实例 ID

      火山引擎云数据库MySQL的实例ID,下拉选择。

      数据库名

      下拉选择实例下,已创建的 MySQL 数据库名称。

      用户名

      有权限访问数据库的用户名信息。

      密码

      输入用户名对应的密码信息。

  5. 数据源信息配置完成后,选择已创建的独享集成资源组,并单击连通性测试按钮,测试网络连通情况。

  6. 连通成功后,单击确认按钮,完成数据源注册。

5 Shell 任务

5.1 新建 Shell 任务

  1. 登录 DataLeap租户控制台
  2. 在具体项目中进入数据开发界面,并单击新建任务按钮进行任务新建。
  3. 依次选择数据开发 > 通用 > Shell 任务类型。
  4. 填写任务基本信息,此处命名为:shell_get_token,并单击确定按钮,完成任务创建。

注意

任务名称信息仅允许字符.、字母、数字、下划线、连字符、[]、【】、()、()以及中文字符,且需要在127个字符以内。

Image

5.2 配置 Shell 任务

  1. 新建 Shell 任务完成后,在编辑器界面输入以下 Shell 逻辑,来实现数据服务 API 动态 Token 的获取。

    !/bin/bash
    
    # 设置授权服务器的URL https://example.com/oauth/token
    AUTH_SERVER_URL="https://example.com/oauth/token"
    
    # 设置refresh token
    REFRESH_TOKEN="your_refresh_token_here"
    
    # 设置客户端ID和客户端密钥(如果需要)
    CLIENT_ID="your_client_id"
    CLIENT_SECRET="your_client_secret"
    
    # 使用curl发送POST请求,交换新的access token
    response=$(curl -s -X POST "$AUTH_SERVER_URL" \
      -H "Content-Type: application/x-www-form-urlencoded" \
      -d "grant_type=refresh_token&refresh_token=$REFRESH_TOKEN&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET")
    
    # 提取access token
    access_token=$(echo $response | jq -r '.access_token')
    
    # 检查是否成功获取access token
    if [ -z "$access_token" ]; then
      echo $response
      echo "Failed to obtain access token. Response:"
    else
      echo "Access token obtained:"
      echo "$access_token"
    fi
    
  2. 脚本设置完成后,单击右侧执行设置按钮,进行 Shell 任务的计算资源组、镜像地址相关属性配置。

    说明

    当任务在脚本中访问公网、私有网络(VPC),或者访问有存在网络访问限制的镜像仓库地址时,您需要进行网络配置,选择能够与您资源互通的私有网络、子网、安全组信息。
    网络配置操作详见4.2 网络配置(可选)

  3. 执行设置选择完成后,进入右侧调度设置界面,进行 Shell 任务的调度属性、依赖关系、任务输出参数等设置。
    其中在任务输出参数中,勾选”将运行结果当做输出“选项,便可自动生成输出参数”outputs“。
    其余更多调度设置说明,详见“调度设置”。
    Image

  4. Shell 任务配置完成后,单击编辑器上方的保存提交按钮,保存任务配置并将其发布到运维中心。

6 数据集成任务

6.1 新建 Rest_API2MySQL 数据集成任务

  1. 单击新建任务按钮,进入新建任务页面。
  2. 选择数据集成 > 离线集成任务类型。
  3. 完成任务基本信息设置,此示例中下游数据集成任务命名为:restapi_sync_by_token
    Image
  4. 单击确定按钮,完成创建。

6.2 配置数据集成任务

数据集成任务新建完成后,进入到任务配置详情界面完成相关配置。

  1. 选择数据源
    其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。
    • REST_API 离线读参数说明

      参数

      说明

      *数据源类型

      您可下拉选择或输入关键词进行搜索REST_API数据源类型。

      *数据源名称

      已在数据源管理中注册成功的REST_API数据源,名称为:doc_rest_api

      *是否拼接header

      按需选择是否在REST_API中拼接header信息,此处选择

      *Header 拼接值

      当您选择需要拼接 header 时,Header 拼接值为必填项,您可在此输入具体的拼接值信息。
      在此可通过依赖上游 Shell 任务将其输出结果传递给下游的方式,进行动态传入参数配置,如:{"x-csrf-token":"{{accessToken}}" },其中{{accessToken}}即为上游 Shell 传入的输出结果。
      Image

      *请求Method

      选择请求 Method 方法,支持指定请求参数的传参位置。
      支持选择 GET 和 POST,两种方式,数据服务请求时,选择 GET 方式。

      请求参数

      按需添加传递给API的请求参数信息,若创建 API 时无设定请求参数,可跳过。
      不同请求 Method 方法,参数格式不同,参考如下:

      • GET方法:abc=123&def=456
      • POST方法:{"abc":123,"def":456}

      *返回数据结构

      根据实际接口返回数据的类型进行选择,此示例中选择数组数据结构。

      *数据格式

      仅支持json的格式。

      数据存储json路径

      输入数组数据存储的 json 路径,可为$(表示保存在根路径),或者类似aa.bb.cc的格式。此示例中路径为:data.list

      *预览数据

      单击自动获取按钮,获得该API返回的预览数据,或直接填写想要获取的数据格式,如:

      {
          "id": 45061,
          "projectId": 34503,
          "name": "解决方案列表",
          "ownerUserName": "xxx@gmail.com",
      }
      

      以此来获取源端需要读取数据的字段信息,方便字段映射时进行自动添加。

      *请求次数

      选择 reader 端是单次请求、多次请求或分页请求。
      本实践中以单次请求为例。

      更多 Rest_API 源端配置说明详见配置 REST_API(HTTP形式)数据源

    • MySQL 离线写说明

      参数

      说明

      *目标类型

      数据去向目标类型选择 MySQL。

      *数据源名称

      已在数据源管理界面注册的 MySQL 数据源,下拉可选创建好的 doc_mysql 数据源。

      *数据表

      数据源下需数据写入的表名,下拉可选。

      写入前准备语句

      在执行该数据集成任务前,需要率先执行的 SQL 语句,通常是为了使任务重跑时支持幂等。
      此实践中置为空。

      写入后准备语句

      执行数据同步任务之后执行的 SQL 语句。例如写入完成后插入某条特殊的数据,标志导入任务执行结束。
      此实践中置为空。

      *数据写入方式

      下拉选择数据写入 MySQL 的方式,此实践中选择 insert into 写入方式,即当主键/唯一性索引冲突时会无法写入冲突的行,任务会运行失败。

      说明

      如果希望主键/唯一索引冲突时任务正常执行可以添加高级参数: job.writer.is_insert_ignoretrue

      更多 MySQL 源端配置说明详见配置 MySQL 数据源

  2. 数据来源和目标端基础信息配置完成后,在字段映射中,单击自动添加按钮,可自动配置源端和目标端映射的字段信息,一一对应即可。
  3. 字段映射配置完成后,单击右侧调度设置按钮,配置任务调度属性、依赖关系、任务输入参数等,其中:
    1. 依赖关系处,通过手动添加的方式,将 Shell 任务添加为上游依赖。

      说明

      手动搜索上游 Shell 任务时,您需确保上游任务已完成提交发布操作。

      Image
    2. 任务输入参数中,通过手动添加方式,添加输入参数名称:accessToken,参数类型为任务,来源下拉选择为上游 Shell 任务名称及对应的输出参数名称。
      Image
      更多调度设置说明详见“调度设置”。
  4. 数据集成任务配置完成后,单击编辑器上方的保存提交按钮,保存任务配置并将其发布到运维中心。

7 运维中心数据回溯

采用此方式配置 Shell 和数据集成任务,并发布至运维中心后,可耐心等待两个任务到达各自调度实例的执行时间点执行完成,便可进行数据结果验证操作。
如果您需要立即验证数据结果,也可在运维中心发起这两个任务的数据回溯操作,来快速验证 API 数据入湖结果。操作步骤如下:

  1. 在上方导航栏中,选择离线任务运维,并进入数据回溯 > 发起的界面,单击右上角新建数据回溯按钮,进入回溯配置窗口。
    Image
  2. 完成以下数据回溯配置:
    1. 回溯范围选择单任务及其下游
    2. 输入 Shell 任务 ID 或名称:shell_get_token
    3. 选择回溯业务时间、指定可调度时段、下游自依赖任务等配置信息;
      Image
    4. 确认无误后,单击下一步按钮,进入回溯具体回溯实例查看;
    5. 在回溯任务预览界面,勾选回溯任务,并单击下一步,进入回溯计划确认界面,确认无误后,便可单击确定回溯按钮,发起任务回溯。
      Image
  3. 在实例运维中,搜索已发起回溯的实例信息,等待上下游任务回溯执行完成。

8 验证 API 数据入库结果

回溯任务执行完成后,您便可通过数据开发 > 临时查询能力,查询落入 MySQL 库表中的实际数据。
Image

  1. 在任务开发界面左侧导航栏中,进入临时查询界面。

  2. 单击新建查询按钮,新建 MySQL 查询任务。

  3. 在查询编辑界面,选择创建的 MySQL 数据源,编辑如下查询语句:

    SELECT * from db.t_user;
    

    Image