跳转至

数据源-API源

概述

API源主要用于对接外部系统提供的API服务,将每个API映射成AIR里面的一张逻辑表,以便在AIR产品中可以对该表进行任意的SQL查询和使用,一旦一个API成功注册成一个PDS表之后,在AIR里面就跟其它任意PDS使用上无任何差异,例如可以对该表跟其它任意源中的表进行Join或者union等各类关联查询等等。

添加API数据源

  1. 首先进入“数据源”界面 img
  2. 选择创建API数据源 img填入源的名称(只能填入英文和数字),并点击“确定”按钮

img

内容 说明
数据源名称 长度大于3个字符,仅允许字母、数字、下划线开头
描述(可选) 数据源的描述信息
数据源额外配置信息 连接数据源所需的额外配置信息
投影更新类型 手动更新:投影数据不进行自动更新,需要手动去更新投影数据周期更新:周期更新可以执行更新周期的类型,更新周期类型包含“月”、“周”、“日”、“小时”
数据周期 决定投影的更新是否按照强依赖策略更新
投影过期时间 永不过期:投影数据不会自动过期失效,删除投影需要手动过期删除指定过期时间:指定投影过期时间后,如果到达指定时间投影未更新,投影状态将判断为过期不可用
保存 保存后,系统会自动生成默认的二级目录“default”。

创建成功后会看到如下Catalog信息,其中系统会为每个API源创建一个默认的default的目录: img

新建API数据

选择API数据源目录,点击“新建API数据”

img

API 基础信息

选择上面创建源下面的default目录,点击右上角的“创建API数据” img 系统会进入API数据的配置界面:

img

内容 说明
表名称 仅允许字母、数字、下划线。字母开头。API数据源范围内唯一
描述 API数据的描述信息

API连接配置

目前AIR只能支持HTTP或者HTTPS方式的API源配置。请求地址:用户可以选择HTTP请求的类型“POST”还是“GET”,在后面输入完整的HTTP连接地址,当HTTP请求为GET类型时,请求参数会附加在URL地址中(备注:每个HTTP请求参数并非要求所有的参数项都需要配置,用户可以根据实际API的要求按需配置即可)。

img

内容 说明
请求地址 支持GETPOST两种请求方式支持输入请求地址,以 http 或 https 开头请求地址中如果输入了参数,则会自动解析并在参数列表展示;同时,参数列表中的信息也会自动拼接到请求的url中
请求参数 请求参数包含参数(Params)、请求头(Headers)、请求体(Body)以及权限认证(Authorization),具体介绍见下文。

参数(Params)

img

内容 说明
参数值 参数值支持动态参数,格式示例${PageIndex} ,支持分页参数分页参数:分页时使用${PageIndex}${PageIndex:num} 表示,代表一个占位符,发送请求时会自动替换${PageIndex}代表被标记的参数为分页参数的起始页码,默认为1。${PageIndex:num}代表被标记的参数为分页参数的起始页码,起始页码被指定为num。比如:'${PageIndex:2}'即会从第2页开始获取数据。分页参数可以定义在参数中或者请求体中

请求头(Headers)

可以配置HTTP请求Header中的标准参数,也可以输入自定义的参数头: img

内容 说明
参数名称 请求头参数可以从常用的参数中选择,也可以自定义常用的请求头参数:Accept、Content-Type、User-Agent、Authorization、Referer、Cookie

请求体(Body)

  1. 配置HTTP请求体(Body)的内容,目前支持三种类型“form-data”:key=value形式;“json”:{"json":""};“xml”: img

分页参数配置:分页参数配置可,如果是GET请求以在Params填写。如果是POST请求,可以把分页参数配置在Body中。

Get请求携带分页参数写法如下:

img

Post请求携带分页参数写法如下:

img

权限认证(Authorization)

权限认证支持无认证、用户名密码、Token以及OAuth 2.0 4种认证类型,配置信息如下:

img

上述配置信息用户根据需要配置完成后,即可点击“测试连接”来测试API配置是否正常,如果显示测试正常,则可以点击“下一步”进入API结果解析配置

测试连接

测试连接仅判断API的连通性,返回的状态码为“200”时,则测试通过

img

解析请求结果

解析请求结果支持表单模式和脚本模式

表单模式

支持选择字段,配置字段的名称和数据类型,进行数据预览

img

脚本模式

当某些API结果无法正常解析的情况下,可以选择“脚本模式”,脚本模式支持用户编写Groovy脚本来解析查询结果,通过脚本模式,理论上可以支持绝大部分类型的API结果的解析。

img

自定义脚本解析器:

API源的结果解析器支持用户手工编写Groovy脚本来解析复杂的API返回结果,假设API返回的结果内容如下:

{
  "data": [
    {
      "id": 0,
      "name": "name0"
    },
    {
      "id": 1,
      "name": "name1"
    },
    {
      "id": 2,
      "name": "name2"
    },
    {
      "id": 3,
      "name": "name3"
    },
    {
      "id": 4,
      "name": "name4"
    },
    {
      "id": 5,
      "name": "name5"
    },
    {
      "id": 6,
      "name": "name6"
    },
    {
      "id": 7,
      "name": "name7"
    },
    {
      "id": 8,
      "name": "name8"
    },
    {
      "id": 9,
      "name": "name9"
    }
  ],
  "code": 200,
  "message": null,
  "rowCount": 50,
  "totalPages": 5
}

可编辑如下Groovy脚本:

/*********** groovy script start ***/
import groovy.json.JsonSlurper;
import groovy.json.JsonOutput;

def jsonSlurper = new JsonSlurper();
def jsonObject = jsonSlurper.parseText(jsonText);
fieldList = ["id", "name"];
dataRows = [];
rowCount = (long)jsonObject.rowCount;
totalPages = (long)jsonObject.totalPages;
jsonObject.data.each {
    app ->
        List<Object> rowData = [];
        fieldList.each { key ->
            value = app[key]
            rowData.add(value);
        }
        dataRows.add(rowData);
}

其中Groovy脚本中的关键变量如下:

变量 变量作用 示例
jsonText API的返回结果会存储在jsonText中,Groovy脚本可以通过该变量获取API的返回内容。 def jsonObject = jsonSlurper.parseText(jsonText);将jsonTest转换成一个对象。可通过rowCount = (long)jsonObject.rowCount;来获取API返回的rowCount值。
dataRows 用于存储解析后的结果数据,是一个对象数组,每个元素保存一行记录,数据的顺序要和fieldList的顺序保持一致。 返回对象数据的类型会通过界面用户配置的字段类型进行转换,默认为String类型。
fieldList 用于存储解析后的结果字段信息,查询引擎会读取该对象值,作为API返回结果的字段列名。

点击“创建”,出现PDS表示API映射的逻辑表创建成功。 img

API逻辑表查询

通过API映射的PDS查询API结果:

img ```// filepath: /Users/rouzhang/Desktop/AIR用户手册/my-docs/docs/数据源-API源.md

概述

API源主要用于对接外部系统提供的API服务,将每个API映射成AIR里面的一张逻辑表,以便在AIR产品中可以对该表进行任意的SQL查询和使用,一旦一个API成功注册成一个PDS表之后,在AIR里面就跟其它任意PDS使用上无任何差异,例如可以对该表跟其它任意源中的表进行Join或者union等各类关联查询等等。

添加API数据源

  1. 首先进入“数据源”界面 img
  2. 选择创建API数据源 img填入源的名称(只能填入英文和数字),并点击“确定”按钮

img

内容 说明
数据源名称 长度大于3个字符,仅允许字母、数字、下划线开头
描述(可选) 数据源的描述信息
数据源额外配置信息 连接数据源所需的额外配置信息
投影更新类型 手动更新:投影数据不进行自动更新,需要手动去更新投影数据周期更新:周期更新可以执行更新周期的类型,更新周期类型包含“月”、“周”、“日”、“小时”
数据周期 决定投影的更新是否按照强依赖策略更新
投影过期时间 永不过期:投影数据不会自动过期失效,删除投影需要手动过期删除指定过期时间:指定投影过期时间后,如果到达指定时间投影未更新,投影状态将判断为过期不可用
保存 保存后,系统会自动生成默认的二级目录“default”。

创建成功后会看到如下Catalog信息,其中系统会为每个API源创建一个默认的default的目录: img

新建API数据

选择API数据源目录,点击“新建API数据”

img

API 基础信息

选择上面创建源下面的default目录,点击右上角的“创建API数据” img 系统会进入API数据的配置界面:

img

内容 说明
表名称 仅允许字母、数字、下划线。字母开头。API数据源范围内唯一
描述 API数据的描述信息

API连接配置

目前AIR只能支持HTTP或者HTTPS方式的API源配置。请求地址:用户可以选择HTTP请求的类型“POST”还是“GET”,在后面输入完整的HTTP连接地址,当HTTP请求为GET类型时,请求参数会附加在URL地址中(备注:每个HTTP请求参数并非要求所有的参数项都需要配置,用户可以根据实际API的要求按需配置即可)。

img

内容 说明
请求地址 支持GETPOST两种请求方式支持输入请求地址,以 http 或 https 开头请求地址中如果输入了参数,则会自动解析并在参数列表展示;同时,参数列表中的信息也会自动拼接到请求的url中
请求参数 请求参数包含参数(Params)、请求头(Headers)、请求体(Body)以及权限认证(Authorization),具体介绍见下文。

参数(Params)

img

内容 说明
参数值 参数值支持动态参数,格式示例${PageIndex} ,支持分页参数分页参数:分页时使用${PageIndex}${PageIndex:num} 表示,代表一个占位符,发送请求时会自动替换${PageIndex}代表被标记的参数为分页参数的起始页码,默认为1。${PageIndex:num}代表被标记的参数为分页参数的起始页码,起始页码被指定为num。比如:'${PageIndex:2}'即会从第2页开始获取数据。分页参数可以定义在参数中或者请求体中

请求头(Headers)

可以配置HTTP请求Header中的标准参数,也可以输入自定义的参数头: img

内容 说明
参数名称 请求头参数可以从常用的参数中选择,也可以自定义常用的请求头参数:Accept、Content-Type、User-Agent、Authorization、Referer、Cookie

请求体(Body)

  1. 配置HTTP请求体(Body)的内容,目前支持三种类型“form-data”:key=value形式;“json”:{"json":""};“xml”: img

分页参数配置:分页参数配置可,如果是GET请求以在Params填写。如果是POST请求,可以把分页参数配置在Body中。

Get请求携带分页参数写法如下:

img

Post请求携带分页参数写法如下:

img

权限认证(Authorization)

权限认证支持无认证、用户名密码、Token以及OAuth 2.0 4种认证类型,配置信息如下:

img

上述配置信息用户根据需要配置完成后,即可点击“测试连接”来测试API配置是否正常,如果显示测试正常,则可以点击“下一步”进入API结果解析配置

测试连接

测试连接仅判断API的连通性,返回的状态码为“200”时,则测试通过

img

解析请求结果

解析请求结果支持表单模式和脚本模式

表单模式

支持选择字段,配置字段的名称和数据类型,进行数据预览

img

脚本模式

当某些API结果无法正常解析的情况下,可以选择“脚本模式”,脚本模式支持用户编写Groovy脚本来解析查询结果,通过脚本模式,理论上可以支持绝大部分类型的API结果的解析。

img

自定义脚本解析器:

API源的结果解析器支持用户手工编写Groovy脚本来解析复杂的API返回结果,假设API返回的结果内容如下:

{
  "data": [
    {
      "id": 0,
      "name": "name0"
    },
    {
      "id": 1,
      "name": "name1"
    },
    {
      "id": 2,
      "name": "name2"
    },
    {
      "id": 3,
      "name": "name3"
    },
    {
      "id": 4,
      "name": "name4"
    },
    {
      "id": 5,
      "name": "name5"
    },
    {
      "id": 6,
      "name": "name6"
    },
    {
      "id": 7,
      "name": "name7"
    },
    {
      "id": 8,
      "name": "name8"
    },
    {
      "id": 9,
      "name": "name9"
    }
  ],
  "code": 200,
  "message": null,
  "rowCount": 50,
  "totalPages": 5
}

可编辑如下Groovy脚本:

/*********** groovy script start ***/
import groovy.json.JsonSlurper;
import groovy.json.JsonOutput;

def jsonSlurper = new JsonSlurper();
def jsonObject = jsonSlurper.parseText(jsonText);
fieldList = ["id", "name"];
dataRows = [];
rowCount = (long)jsonObject.rowCount;
totalPages = (long)jsonObject.totalPages;
jsonObject.data.each {
    app ->
        List<Object> rowData = [];
        fieldList.each { key ->
            value = app[key]
            rowData.add(value);
        }
        dataRows.add(rowData);
}

其中Groovy脚本中的关键变量如下:

变量 变量作用 示例
jsonText API的返回结果会存储在jsonText中,Groovy脚本可以通过该变量获取API的返回内容。 def jsonObject = jsonSlurper.parseText(jsonText);将jsonTest转换成一个对象。可通过rowCount = (long)jsonObject.rowCount;来获取API返回的rowCount值。
dataRows 用于存储解析后的结果数据,是一个对象数组,每个元素保存一行记录,数据的顺序要和fieldList的顺序保持一致。 返回对象数据的类型会通过界面用户配置的字段类型进行转换,默认为String类型。
fieldList 用于存储解析后的结果字段信息,查询引擎会读取该对象值,作为API返回结果的字段列名。

点击“创建”,出现PDS表示API映射的逻辑表创建成功。 img

API逻辑表查询

通过API映射的PDS查询API结果:

img