Kettle REST Client通过GET获取token以POST方式请求接口解析JSON入文件完整实例
需求说明
通过kettle组件调用接口并解析JSON成结构化数据入文件。
完整实例

解决方法
- 利用生成记录组件定义URL参数
- 通过REST ClENT组件请求得到TOKEN
- 通过JSON INPUT组件解析接口请求的结果
- 通过JAVASCRIPT组件拼接生成业务接口的完整参数
- 通过REST ClENT组件请求得到JSON结果
- 通过JSON INPUT组件解析业务接口请求的结果
- 拖Swich/Case组件判断接口调用状态
- 通过文本文件输出组件保存解析后结果。
Step0:新建kettle转换
Step1:定义原始参数
拖一个生成记录组件,定义tokenurl

Step2:调用接口获得token
拖一个REST CLIENT 组件用户获取token,勾选 从从字段里获取URL,设置请求方法为GET 并定义结果字段名为result。

Step3:解析JSON里的Token
拖一个JSON Input 组件,勾选 原定义在一个字段里,字段选择result。

#定义解析JSON的方法

Step4:拼接新的调用参数
拖个JAVASCRIPT组件定义新的变量拼接完成的接口url。

Step5:定义接口参数
拖一个REST CLIENT组件:
1、勾选从字段里获取URL
2、选择URL字段变量 为zzzfinsurl
3、选择请求类型 为POST,
4、设置body字段 为生成记录组件 里定义的zzzbody
5、设置返回字段 为 zzzresult
6、设置HTTP状态字段 为zzzcode

Step6:判断接口调用状态
拖一个Switch/case 组件,对Http状态进行判断,如果请求状态码是200则执行JSON Input组件。

Step7:解析接口调用结果
拖一个JSON INPUT 组件,勾选原定义在一个字段里 ,选择源字段zzzresult。

#指定JSON解析方法

Step8:入文件或者入库
拖一个文本文件输出组件,指定文件路径名、字段映射关系。


延展阅读
如果JSON解析不熟悉,可以先拷贝一个接口调用的JSON文件,在JSON INPUT组件里指定JSON文件,点击选择字段来让kettle生成解析表达式。
#1 指定本地JSON文件,主要这里要取消勾选原定义在一个字段里。

#2 点击选择字段

#3 勾选要解析的字段(支持多选)

#4 注意:因为这里为了方便生成JSON解析表达式,实际调用时需要再次勾选原定义在一个字段里。
Step9: 调用验证
#1 调用转换
/root/software/data-integration/pan.sh -file=/root/workbase/RESTCLIENT.ktr

#2 查看结果
