支持通过REST 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字段对应的数据。
点击 测试连接 ,即可进行数据源连通性测试。测试成功后,点击 保存 即可完成当前数据连接所有配置。