You need to enable JavaScript to run this app.
导航

Restful API数据连接

最近更新时间2024.03.28 11:23:40

首次发布时间2022.08.17 16:53:57

1. 功能概述

支持通过REST API 接入数据。

2. 使用前提

用户需要具备 模块权限-数据连接-查看或新建连接 的权限,才可以使用该功能。

3. 操作说明

点击 数据管理 > 数据连接 >新建数据连接 , 选择 REST API 2.0 数据接入。

3.1 配置基本信息

  • 数据连接名称:支持自定义名称,或使用系统默认名称(例如:REST_API_2.0_时间戳)。

  • 输入API地址:在“URL地址”框中,填入想要连接的API的完整网址。

  • 选择请求类型:支持GET、POST两种请求方式。

  • 设置超时时间:在“超时时间”框中,输入请求在没有响应时等待的最长时间(单位:毫秒),默认为3分钟。

  • 设置重试次数:配置重试次数,即当请求失败,系统尝试重试的次数,最多支持5次。

3.2 字段路径配置规则

总则:对JSON进行操作,$表示根节点,.号表示取子节点。
如果JSON数据为:

{
  "showapi_res_error": "",
  "showapi_res_id": "6597a2f5fb638cf45b4d460c",
  "showapi_res_code": 0,
  "showapi_fee_num": 1,
  "showapi_res_body": {
    "list": [
      {
        "time": "14:26:57",
        "zhesuan": "193.69",
        "code": "AED",
        "hui_out": "195.91",
        "chao_in": "192.95",
        "chao_out": "199.47",
        "name": "阿联酋迪拉姆",
        "hui_in": "194.55",
        "day": "2024-01-05"
      },
      {
        "time": "14:26:57",
        "zhesuan": "477.56",
        "code": "AUD",
        "hui_out": "481.77",
        "chao_in": "478.08",
        "chao_out": "483.16",
        "name": "澳大利亚元",
        "hui_in": "478.57",
        "day": "2024-01-05"
      }
    ],
    "listSize": 28,
    "ret_code": 0
  }
}

则一些路径对应的值结果取值如下:

$.showapi_fee_num = 1
$.showapi_res_id = "6597a2f5fb638cf45b4d460c"
$.showapi_res_body.list.* = [{"time":"14:26:57","zhesuan":"193.69" ... // 后面省略

3.2.1 前置操作动态参数的结果字段路径

这里配置的是前置请求的结果作为动态参数传入当前请求时,所配置的对应字段的路径,规则同上。

3.2.2 当前请求 - 解析请求与路径配置 - 字段路径

这里配置的是解析结果的根路径,规则如下:

  • 根路径指向 必须是一个Map或者Array,否则无法解析出字段的key。

  • 如果指向的是 Array,则必须写成能解析出key的形式,例如以.* 结尾,例如$.list.*,不得直接写成$.list,这样解析不出key。

  • 配置完成后,点击获取字段,只会解析出该路径下的第一层字段结构,且这些字段都为基本数据类型。

示例:

// 取整个结果,结果在字段包括:showapi_res_error、showapi_res_id、...、showapi_res_body
$
// 取数组中的内容
$.showapi_res_body.list.* = [{"time":"14:26:57","zhesuan":"193.69" ... // 后面省略

3.2.3 当前请求 - 字段配置 - 解析路径

这里配置的是解析根路径后获取的最终字段的路径,同时也是该数据连接的最终字段结果。
这里要注意:对于根路径为数组的情况,如果字段路径前缀和根路径不一致,则最终生成的结果集中,会把该字段对应的值计算出来后直接加到数组的每一个元素中。
例如,对于天气数据,根路径为 $.forcast15days.list.* ,表示未来15天的天气,用户再添加一个 $.city 的字段代表城市,则最终会把 $.city 的值计算出来后,直接加到每一个未来天气的数据里去作为一个叫做city的key。其值在数组里的每一项都是相同的。

3.3 动态参数编写规则

动态参数和后置脚本都选用Groovy作为脚本引擎。
对于params、body、header、url中出现的 ${},作为 groovy的字符串插值表达式 执行获取结果。同时会内置一些自定义函数,例如md5()方法、日期变量等。以下是一些执行结果示例:

假如目前有两个参数,是在前置请求中配置好的,如下:
num1 = 1
num2 = 2

则${}里面的内容会被作为表达式执行,其余部分为普通字符串,下面表达式结果分别为:
abc               // abc
${num1}           // 1
${num1+num2}      // 3
${num1}+num2      // 1+num2
${num3}           // 报错,没有num3参数
${"${num1}"}      // ${num1}

3.4 置操作编写规则

下面这段内容放到后置操作里就行,作为默认内容

def convertJson(response) {
    /*
    这里填写后置操作代码
    response表示api返回的结果,假设api返回结果为
    {
        "city": "上海市",
        "forcast": [
            {"temperature": 5, "day": "2024-01-01"},
            {"temperature": 6, "day": "2024-01-02"},
        ],
        "test": "test"
    }
    一些代码示例:
    场景1:添加、编辑、循环,为list中每个元素加上city
    ls = response.forcast
    for (i=0; i< ls.size(); i++) {
        ls[i].city = response.city
    }
    场景2:删除某个key
    response.remove("test")
    */
    return response;
}

3.5 分页功能规则

3.5.1 基础配置

开启分页功能后,按要求配置即可,其中终止条件为groovy表达式,例如需要实现当请求结果中的data列表为空时结束分页,可以按照如下方式配置:

使用时通过 ${pageNum} 引用即可,该变量会从起始页开始,一直到达到终止条件

3.5.2 终止条件规则

支持groovy语法,当达到终止条件时不再进入下一页。response代表本次请求的结果,一些例子如下:

response.data.size() == 0   // 当response下的data列表的长度为0(空列表)时停止分页
response.hasMore == false // 当response下的hasMore为false时停止分页

3.6 解析请求与路径配置

完成上述配置后,点击“发送请求”,系统将解析请求,解析的顺序为「前置操作」>「当前请求」>「后置操作」,并将解析结果呈现在「解析结果」中。

  • 字段路径:输入字段路径,使用$表示根节点,.号表示子节点。点击“获取字段”按钮,系统将解析并展示“字段配置”区域。

说明

提示: 路径应指向Map或Array,若希望解析Array,需要在路径末尾加上.*

提供两个示例如下: $.map1 代表取根节点下map1字段对应的数据; $.array1.* 代表取根节点下array1字段对应的数据。

  • 字段配置:使用“添加”按钮支持新建字段,解析逻辑基于用户输入的rootPath为基准,解析出结果。同时,支持删除已配置的字段。

  • 数据预览:点击“数据预览”按钮,支持查看当前选中字段的前100行明细数据。

3.7 测试连接与保存


点击 测试连接 ,即可进行数据源连通性测试。测试成功后,点击 保存 即可完成当前数据连接所有配置。