支持通过REST API 接入数据。
用户需要具备 模块权限-数据连接-查看或新建连接 的权限,才可以使用该功能。
1.点击 数据管理 - 数据连接。
2.在数据连接目录左上角- 新建数据连接 按钮,选择 API - REST API 2.0 数据接入
总则:对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" ... // 后面省略
这里配置的是前置请求的结果作为动态参数传入当前请求时,所配置的对应字段的路径,规则同上。
这里配置的是解析结果的根路径,规则如下:
.*
结尾,例如$.list.*
,不得直接写成$.list
,这样解析不出key。示例:
// 取整个结果,结果在字段包括:showapi_res_error、showapi_res_id、...、showapi_res_body
$
// 取数组中的内容
$.showapi_res_body.list.* = [{"time":"14:26:57","zhesuan":"193.69" ... // 后面省略
这里配置的是解析根路径后获取的最终字段的路径,同时也是该数据连接的最终字段结果。
这里要注意:对于根路径为数组的情况,如果字段路径前缀和根路径不一致,则最终生成的结果集中,会把该字段对应的值计算出来后直接加到数组的每一个元素中。
例如,对于天气数据,根路径为 $.forcast15days.list.* ,表示未来15天的天气,用户再添加一个 $.city 的字段代表城市,则最终会把 $.city 的值计算出来后,直接加到每一个未来天气的数据里去作为一个叫做city的key。其值在数组里的每一项都是相同的。
动态参数和后置脚本都选用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}
下面这段内容放到后置操作里就行,作为默认内容
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;
}
开启分页功能后,按要求配置即可,其中终止条件为groovy表达式,例如需要实现当请求结果中的data列表为空时结束分页,可以按照如下方式配置:
使用时通过 ${pageNum} 引用即可,该变量会从起始页开始,一直到达到终止条件
支持groovy语法,当达到终止条件时不再进入下一页。response代表本次请求的结果,一些例子如下:
response.data.size() == 0 // 当response下的data列表的长度为0(空列表)时停止分页
response.hasMore == false // 当response下的hasMore为false时停止分页
完成上述配置后,点击“发送请求”,系统将解析请求,解析的顺序为「前置操作」>「当前请求」>「后置操作」,并将解析结果呈现在「解析结果」中。
说明
提示: 路径应指向Map或Array,若希望解析Array,需要在路径末尾加上.*
提供两个示例如下: $.map1 代表取根节点下map1字段对应的数据; $.array1.* 代表取根节点下array1字段对应的数据。
点击 测试连接 ,即可进行数据源连通性测试。测试成功后,点击 保存 即可完成当前数据连接所有配置。