特定应用场景下可使用的算子,支持通过REST API 接入数据。
场景释义:假设上游输出了公司字段名称,可通过调用公司法人信息API,获取各公司的法人信息后,对外输出。
说明
Tip
参数设置
参数value支持静态参数值与动态参数值。
静态参数值:填写API参数的具体值即可,如“male”。
动态参数值:请按照${params|example:value}填写:
params指的是上个节点的输出字段名称,该字段下的值将作为API参数的入参值。在算子执行时使用,必填项。
example:value是样例值,用于发送请求获取接口的返回格式,必填项。
示例:假设API的入参是object_id,要将上游输出的字段unit_id的值作为object_id的入参值,则在填写API配置时,Key是object_id,value的填写格式为${unit_id|example:10001}。
用户需要具备 模块权限-数据连接-查看或新建连接 的权限,才可以使用该功能。
点击 数据管理 > 数据连接 >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; }
完成上述配置后,点击“发送请求”,系统将解析请求,解析的顺序为「前置操作」>「当前请求」>「后置操作」,并将解析结果呈现在「解析结果」中。
说明
提示: 路径应指向Map或Array,若希望解析Array,需要在路径末尾加上.*
提供两个示例如下: $.map1 代表取根节点下map1字段对应的数据; $.array1.* 代表取根节点下array1字段对应的数据。
点击 测试连接 ,即可进行数据源连通性测试。测试成功后,点击 保存 即可完成当前数据连接所有配置。