You need to enable JavaScript to run this app.
导航
配置 REST_API(HTTP形式)数据源
最近更新时间:2024.10.23 10:39:14首次发布时间:2023.09.15 15:35:45

REAT_API 数据源,为您提供离线任务读取 REAT_API 通道的功能,实现与其他数据源之间的数据传输能力。
本文为您介绍 DataSail 的 REAT_API 数据同步的能力支持情况。

1 使用限制

  1. 目前 REST_API 数据源仅支持配置批式读取任务。
  2. 子账号新建数据源时,需要有项目的管理员角色,方可以进行新建数据源操作。各角色对应权限说明,详见:管理成员

2 支持的字段类型

类型分类

数据类型

备注

整数类型

LONG

DATETIME 可以转为 LONG 时间戳

字符串类型

STRING

浮点类型

DOUBLE

布尔类型

BOOLEAN

日期时间类型

DATE

DATETIME 需要转为 LONG 时间戳

列表类型

LIST

支持的元素类型:BOOLEAN,LONG,DOUBLE,INTEGER

键值对类型

MAP

键、值支持的类型:LONG,STRING,DOUBLE,BOOLEAN,DATE

3 数据同步任务开发

3.1 数据源注册

新建数据源操作详见配置数据源,下面为您介绍配置 REST_API 数据源信息说明:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数

说明

基本配置

*数据源类型

REST_API

*接入方式

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

*数据源名称

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

描述

对当前新建数据源的注释说明,方便后续进行管理。

参数配置

*API Url

输入源端 API Url 链接地址。

默认请求头

默认的请求头格式,例如:{"Auxxxxxxxion":"Bearer sext-txxxn-1"}

*验证方式

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

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

3.2 新建离线任务

REST_API 数据源测试连通性成功后,进入到数据开发界面,开始新建 REST_API 相关通道任务。
新建任务方式详见离线数据同步

3.3 可视化配置说明

任务创建成功后,您可根据实际场景,配置 REST_API 批式读通道任务。

说明

目前暂不支持配置 REST_API 批式写通道。

3.3.1 REST_API 批式读

Image
数据来源选择 REST_API,并完成以下相关参数配置:
其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数项

说明

*数据源类型

REST_API

*数据源名称

下拉选择已注册成功的 REST_API 数据源。
若还未建立相应数据源,可单击数据源管理按钮,前往创建 REST_API 数据源。

*是否拼接 header

您可按需选择是否在 REST_API 中拼接 header 信息。

*Header 拼接值

当您选择需要拼接 header 时,Header 拼接值为必填项,您可在此输入具体的拼接值信息。
您也可通过依赖上游 shell/python/LAS SQL 任务将其输出结果传递给下游的方式,进行动态传入参数配置,如:{"header1":"{{test_input1}}"},其中{{test_input1}}即为上游传入的输出结果,可在调度设置 > 任务输入参数中进行配置。
任务输入输出参数操作详见“5.1 将上游任务的执行结果,当做输出参数”。

*请求 Method

请求方法支持 GET 和 POST,两种方式。

请求参数

输入传递给 API 的请求参数信息:

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

*返回数据结构

接口返回数据的类型,返回一条数据或者一组数据。

*数据格式

支持 json 的格式。

数据存储 json 路径

输入单条或者数组数据存储的 json path 路径,将会读取您输入 path 路径下的 json 内容。
可为$(表示保存在根路径),或者类似 aa.bb.cc 的格式。

*预览数据

单击自动获取按钮,便可自动获取并预览展示 API 中的数据,检查数据格式情况。

*请求次数

选择 reader 端是单次请求、多次请求或分页请求,多次/分页请求需要配置参数:

  • 多次请求时,需添加以下对应参数:
    • 多次请求对应参数:例如 pagenumber,第一次请求对应 pagernumber=0,步长+Step,最后一次 pagenumber=100。
    • StartIndex:多次请求的起点, 大于等于 0 , 区间左包含。
    • Step:多次请求步长,大于等于1。
    • EndIndex:多次请求的终点, 大于等于 startIndex + step , 区间右包含。
  • 分页请求时,需添加以下对应参数:
    • 多次请求对应参数:仅支持设置一个参数,例如 pagenumber,第一次请求对应 pagernumber=0,步长+1,最后一次 pagenumber=100。
    • 单页大小参数:仅支持设置一个单页大小参数名,例如 size。
    • StartIndex:分页请求的起点, 大于等于 0 , 区间左包含。
    • Step:分页请求页大小, 大于等于1。
    • EndIndex:结束页码编号,数据包含该页。
      默认 -1 表示根据返回数据自动判断是否结束,判断方法:(数据页码编号 - 起始页码编号 + 1)*单页数据大小 >= 总数据条数,或者当前页数据条数 < 单页数据大小。
    • 页码字段路径:返回数据页码字段路径,例如data.pagenumber
    • 单页大小字段路径:返回数据单页大小字段路径,返回的单页大小与请求的单页大小不一致时需要填写。例如 data.size,非必填,默认为step
    • 总数据条数字段路径:返回数据总数据条数字段路径,例如 data.total

3.3.2 字段映射

数据来源和目标端配置完成后,需要指定来源和目标端的字段映射关系,根据字段映射关系,数据集成任务将源端字段中的数据,写入到目标端对应字段中。
字段映射支持选择基础模式转换模式配置映射:

注意

基础模式和转换模式不支持互相切换,模式切换后,将清空现有字段映射中所有配置信息,一旦切换无法撤销,需谨慎操作。

  • 转换模式:
    字段映射支持数据转换,您可根据实际业务需求进行配置,将源端采集的数据,事先通过数据转换后,以指定格式输入到目标端数据库中。
    转换模式详细操作说明详见4.1 转换模式
    在转换模式中,你可依次配置:来源节点、数据转换、目标节点信息:

    配置节点

    说明

    来源节点

    配置数据来源 Source 节点信息:

    • 节点名称:自定义输入来源节点名称信息,只允许由数字、字母、下划线、-和.组成;且长度不能超过10。
    • 数据字段:通过自动添加、手动添加等方式添加数据来源字段信息。

    配置完成后,单击确认按钮,完成来源节点配置。

    数据转换

    单击数据转换右侧添加按钮,选择 SQL 转换方式,配置转换信息和规则:

    • 节点名称:自定义输入来源节点名称信息,只允许由数字、字母、下划线、-和.组成;且长度不能超过10。
    • SQL 脚本:输入 SQL 脚本转换规则,目前仅支持添加一个转换的 SQL 语句,且不能包括 “;”。

    配置完成后,单击确认按钮,完成数据转换节点配置。SQL 脚本示例详见4.1.2 添加转换节点

    目标节点

    配置目标节点 Sink 信息:

    • 节点名称:自定义输入来源节点名称信息,只允许由数字、字母、下划线、-和.组成;且长度不能超过10。
    • 数据字段:通过自动添加、手动添加等方式添加数据目标字段信息。

    配置完成后,单击确认按钮,完成目标节点配置。

  • 基础模式:

    您可通过以下三种方式操作字段映射关系:

    • 自动添加:单击自动添加按钮,根据两端数据表信息,可以自动填充来源和目标的字段信息。
    • 手动添加:单击手动添加按钮,可以手动编辑来源和目标的字段信息,可以逐个添加。
    • 移动\删除字段:您也可以根据需要移动字段映射顺序或删除字段。

3.4 DSL 配置说明

REST_API 数据源同时也支持使用脚本模式(DSL)的方式进行配置。
在某些复杂场景下,您可通过任务脚本的方式,按照统一的 Json 格式,编写 REST_API Reader 参数脚本代码,来运行数据集成任务。

3.4.1 进入 DSL 模式

进入 DSL 模式操作流程,可详见 MySQL 数据源-4.4.1 进入DSL 模式

3.4.2 配置 REST_API Reader

进入 DSL 模式编辑界面后,您可根据实际情况替换相应参数,REST_API Reader 脚本示例如下:

{
  "job": {
    "version": "0.2",
    "type": "batch",
    "common": {
      ...
    },
    "reader": {
      "type": "restapi",
      "datasource_id": null,
      "content_type": "JSON",
      "class": "com.bytedance.bitsail.batch.restapi.RestApiInputFormat",
      "url": "https://issues.apache.org/jira/rest/api/2/search",
      "params": {
        "jql":"project=FLINK AND updated>-1d"
      },
      "response_structure": "array",
      "request_method": "GET",
      "request_times": "once",
      "json_path": "issues",
      "columns" :[
        {
          "name":"expand",
          "type":"string"
        },
        {
          "name":"id",
          "type":"string"
        },
        {
          "name":"self",
          "type":"string"
        },
        {
          "name":"key",
          "type":"string"
        }
      ]
    },
    "writer": {
      ...
    }
  }
}

其中参数名称前带 * 的为必填参数,名称前未带 * 的为可选填参数。

参数名称

参数含义

*type

Reader type 类型,此处默认固定值 restapi

*datasource_id

对应 REST_API 的数据源 ID,暂时不支持,这里请填写 null

*class

RestApi Reader connector type,默认固定值:com.bytedance.bitsail.batch.restapi.RestApiInputFormat

*columns

需要同步的字段名称及其类型信息。

*content_type

数据格式类型,默认填写 JSON 形式。

*url

请求 URL

*params

请求参数

*request_method

api 请求方法,支持 GET/POST

request_times

循环请求次数,支持单次(once)、多次(multiple)、分页(paging),默认 once

start_index

循环开始的 index

end_index

循环结束的 index

step

循环的步长

json_path

导入的 json 路径,需要是 jsonPath 语法,默认 $

response_structure

api 返回数据结构,支持单条数据(object)/数组数据(array),默认 object

poll_interval_mills

api 请求限速,默认请求间隔 1000ms

headers

api 请求 header

retry

重试次数,默认 3 次

retry_backoff_multiplier_ms

重试间隔增加的倍数,重试间隔采用 Fibonacci 数列的方式增加重试时间,默认 100ms

retry_backoff_max_ms

最大重试间隔,默认 10000ms

connect_timeout

http 请求超时时间,默认 60000ms

socket_timeout

http 请求 socket 超时时间,默认60000ms