本文为您介绍RestAPI Reader支持的数据类型、字段映射和数据源等参数及配置示例,在创建数据集成任务节点前,您可参考本文了解数据集成过程中对数据源进行数据抽取所需的参数及支持的数据类型。

背景信息

RestAPI Reader插件提供了读取RESTful接口数据的能力。RestAPI Reader从RESTful地址中获取数据,并转换为数据同步传输协议传递给Writer。RestAPI Reader支持JSON格式的返回结果,并可以从中读取INT、BOOLEAN、DATE、DOUBLE、FLOAT、LONG、STRING数据类型。

数据类型转换列表

类型分类 数据集成column配置类型
整数类 LONG,INT
字符串类 STRING
浮点类 DOUBLE,FLOAT
布尔类 BOOLEAN
日期时间类 DATE

参数说明

进行数据集成时,您需要添加数据源后再配置数据源的来源与去向,并在配置过程中设置好集成的数据及数据类型等信息,整个数据集成包含数据提取(使用reader插件提取数据来源的数据)和数据写入(使用writer插件将集成的数据写入数据去向的数据源中)。

以下为您介绍使用reader插件提取RestAPI类型数据源的数据时,需要配置的参数。
说明 以下的参数包含在添加数据源和配置数据集成任务节点的过程中。

当前插件暂不支持使用调度参数。

参数 描述 是否必选 默认值
url RESTful接口地址。
dataMode RESTful请求返回的结果JSON数据的格式。
  • oneData:从返回的JSON中取其1条数据。
  • multiData:从返回的JSON中取一个JSON数组,传递多条数据给writer。
responseType 返回结果的数据格式,目前仅支持JSON格式。 JSON
column 读取字段列表,type指定源数据的类型,name指定当前column数据获取的JSON路径。您可以指定column字段信息,配置如下。

"column":[{"type":"long","name":"a.b" //从a.b路径中查找数据},{"type":"string","name":"a.c"//从a.c路径中查找数据}]

对于您指定的column信息,type和name必须填写。

dataPath 从返回结果中查询单个JSON对象或者JSON数组的路径。
method 请求方法,支持get或post两种方式。
customHeader 传递给RESTful接口的header信息。
parameters 传递给RESTful接口的参数信息。
  • get方法填入abc=1&def=1
  • post方法填入JSON类型参数。
dirtyData 当从指定的column json路径中找不到数据时的处理方式。
  • dirty:当一条数据解析时遇到column找不时这条数据置为脏数据。
  • null:当一条数据解析时遇到column找不到时,这个column设置为null。
dirty
requestTimes 从RESTful地址中请求数据的次数。
  • single:只进行一次请求。
  • multiple:进行多次请求。
single
requestParam 若requestTimes设为multiple时,需要指定循环的参数,例如pageNumber,插件会根据设置的startIndex、endIndex、step三个参数循环传递pageNumber参数给RESTful接口,进行多次请求。
startIndex 循环请求的起点,起点包含在循环请求之内。
endIndex 循环请求的终点,终点包含在循环请求之内。
step 循环请求的步长。
authType 验证方法。包括:
  • Basic Auth:基础验证。

    如果数据源API支持用户名和密码的方式进行验证,您可选择此种验证方式,并在选择完成后配置用于验证的用户名和密码,后续数据集成过程中对接数据源时,通过Basic Auth协议传递给RESTful地址,完成验证。

  • Token Auth:Token验证。

    如果数据源API支持Token的方式进行验证,您可选择此种验证方式,并在选择完成后配置用于验证的固定Token值,后续数据集成过程中对接数据源时,通过传入header中进行验证,例如:{“Authorization”:”Bearer TokenXXXXXX”}。

  • Aliyun API Signature:阿里云API签名验证。

    如果数据源为阿里云产品,且此阿里云产品的API支持通过AccessKey和AccessSecret的方式进行验证,您可选择此种种验证方式,并在选择完成后配置用于验证的AccessKey和AccessSecret。

authUsername/authPassword Basic Auth验证的用户名和密码。
authToken Token Auth验证的token。
accessKey/accessSecret Aliyun API签名验证的账户信息。

配置示例:向导模式

  1. 选择数据源。
    配置同步任务的数据来源api数据源来源
    参数 描述
    数据源 数据源类型选择RestAPI后,选择需要读取的数据表。
    请求Method 即上述参数说明中的method
    返回数据结构 即上述参数说明中的dataMode
    数据存储JSON路径 即上述参数说明中的dataPath
    数据格式 即上述参数说明中的responseType,目前仅支持JSON格式。
    脏数据处理 即上述参数说明中的dirtyData,默认值为dirty
    header 即上述参数中的customHeader
    请求参数 即上述参数中的parameters
    请求次数 即上述参数中的requestTimes
    StartIndex/Step/EndIndex 与上述参数中同名参数相同。
  2. 字段映射,即上述参数说明中的column
    左侧的源头表字段和右侧的目标表字段为一一对应关系。单击添加一行可以增加单个字段,鼠标放至需要删除的字段上,即可单击删除图标进行删除 。字段映射
    参数 描述
    同名映射 单击同名映射,可以根据名称建立相应的映射关系,请注意匹配数据类型。
    同行映射 单击同行映射,可以在同行建立相应的映射关系,请注意匹配数据类型。
    取消映射 单击取消映射,可以取消建立的映射关系。
    自动排版 可以根据相应的规律自动排版。
    手动编辑源表字段 请手动编辑字段,一行表示一个字段,首尾空行会被采用,其他空行会被忽略。
    添加一行 单击添加一行,您可以输入以下类型的字段:
    • 可以输入常量,输入的值需要使用英文单引号,如'abc’'123’等。
    • 可以配合调度参数使用,例如${bizdate}等。
    • 可以输入关系数据库支持的函数,例如now()count(1)等。
    • 如果您输入的值无法解析,则类型显示为未识别。
  3. 通道控制。通道配置
    参数 描述
    任务期望最大并发数 数据同步任务内,可以从源并行读取或并行写入数据存储端的最大线程数。向导模式通过界面化配置并发数,指定任务所使用的并行度。
    同步速率 设置同步速率可以保护读取端数据库,以避免抽取速度过大,给源库造成太大的压力。同步速率建议限流,结合源库的配置,请合理配置抽取速率。
    错误记录数 错误记录数,表示脏数据的最大容忍条数。
    分布式处理能力 暂不支持,敬请期待。

配置示例:脚本模式

脚本配置示例如下所示。
{
    "type":"job",
    "version":"2.0",
    "steps":[
        {
            "stepType":"restapi",
            "parameter":{
                "url":"http://127.0.0.1:5000/get_array5",
                "dataMode":"oneData",
                "responseType":"json",
                "column":[
                    {
                        "type":"long",
                        "name":"a.b"  //从a.b路径中查找数据
                    },
                    {
                        "type":"string",  //从a.c路径中查找数据
                        "name":"a.c"
                    }
                ],
                "dirtyData":"null",
                "method":"get",
                "defaultHeader":{
                    "X-Custom-Header":"test header"
                },
                "customHeader":{
                    "X-Custom-Header2":"test header2"
                },
                "parameters":"abc=1&def=1"
            },
            "name":"restapireader",
            "category":"reader"
        },
        {
            "stepType":"stream",
            "parameter":{

            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":""
        },
        "speed":{
            "throttle":true,  //当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。
            "concurrent":1,  //作业并发数。 
            "mbps":"12"//限流
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}
脚本模式配置说明如下:
Restapi插件发出http(s)请求后,会获得请求响应body(body是一个json),dataPath用来配置从body中提取数据的json path路径。举2个示例如下:


以接口返回数据body如下举例,其中业务数据在DATA内,且接口一次返回了多行数据(DATA是一个数组):
{
    "HEADER": {
        "BUSID": "bid1",
        "RECID": "uuid",
        "SENDER": "dc",
        "RECEIVER": "pre",
        "DTSEND": "202201250000"
    },
    "DATA": [
        {
            "SERNR": "sernr1"
        },
        {
            "SERNR": "sernr2"
        }
    ]
}

如果需要将DATA中的多行数据抽取为多条同步记录,则需要将 column 配置为 "column": [ "SERNR" ],dataMode 配置为 "dataMode": "multiData",dataPath 配置为 "dataPath": "DATA"


以接口返回数据body如下举例,其中业务数据在content.DATA内,且接口一次返回了1行数据(DATA是一个对象):
{
    "HEADER": {
        "BUSID": "bid1",
        "RECID": "uuid",
        "SENDER": "dc",
        "RECEIVER": "pre",
        "DTSEND": "202201250000"
    },
    "content": {
        "DATA": {
            "SERNR": "sernr2"
        }
    }
}

如果需要将content.DATA中的一行数据抽取为一条同步记录,则需要将 column 配置为 "column": [ "SERNR" ],dataMode 配置为 "dataMode": "oneData",dataPath 配置为 "dataPath": "content.DATA"