首页 > 热点 > 正文

Kettle学习笔记(四):接口请求和Java代码 全球热资讯

2023-04-07 17:09:31 来源:哔哩哔哩

一、http请求方式


(资料图片)

HTTP1.0定义了:GET、POST和HEAD方法。

HTTP1.1新增了:OPTIONS、PUT、DELETE、TRACE、CONNECT等方法。

虽然在HTTP1.1增加了PUT、DELETE等方法,但是一般已经习惯使用GET和POST的开发人员,一般较少会使用新增的请求方法,新方法的增加让请求更加规范,但是只使用GET和POST也可以满足请求的所有需要(不然之前那么多年怎么用的)。

GET和POST的最大区别就是GET请求需要将参数拼在URL上,而POST请求则将参数放到BODY体中,比起GET的对外暴露POST相对安全。

以钉钉开放平台的请求作为示例:

二、接口验证方式

下面仅列举几种我在工作中常见的用户身份验证方式,并不涉及到里面详细的技术拆解,简单介绍下。

1)Token鉴权(JWT)

对使用Token鉴权技术的网站,在Kettle中一般需要发起两次请求。

第一次,通过Key和Secret获取accessToken。

第二次,将accessToken放到请求的Headers中,携带其他参数进行请求。

2) MD5加盐

MD5属于比较常见的加密算法,由于MD5算法属于单向加密,需要暴露出相关的请求参数,但是暴露相关请求参数会导致不安全,怎么解决这个问题呢?那就是加盐。

通信双方约定一个salt值,然后将其他参数和盐值一起进行加密,这样加密后的数据很难进行破解。这里的salt值,其实类似于对称加密中的公钥,只不过,收到请求的一方是通过公钥解密,而MD5的salt值是双方都通过salt值加密。

举例如下:

key=harry&time=129187939&hash=BF04A55B30CFF562F7ADD9F054AB7FFB,被请求方通过明文key获取当前key的salt值,然后将相关参数加上salt值按约定方式加密,得出相同的hash值,就可以确定是对的人!

3) RSA非对称加密

RSA是非对称加密比较有代表性的一种。非对称加密拥有一对密钥:公钥+私钥。请求方通过公钥进行加密,然后被请求方通过私钥进行解密。非对称加密不需要在请求时暴露参数,对隐私数据有更好的保护作用,比如请求涉及到隐私信息的。

举例如下:

{"id": "xxx","phone":"199xxx","idCard":"1100xxx","name":"张三","workName":"xx单位"}

三、Java代码使用

Kettle中支持嵌入Java代码。加入一个新的Java代码,然后从左侧拉入一个main方法,中间的部分是给我们写业务逻辑用的。输入输出字段可以从Input fields和Output fields查看。其实这部分内容主要是用来拼写请求参数和加密参数用的。

需要引用什么包,在顶部import即可。听说可以将外部包放到Kettle目录下的/lib路径中,然后再进行引用,我没有进行尝试。

四、示例

1)MD5加盐接口访问

第一步,通过【生成记录】写入URL。

第二步,通过【Java代码】拼装请求参数和MD5加密加盐。

第三步,通过【REST client】发起请求。

第四步,通过【JSON input】拆分返回的JSON数据。

拆分完成后的数据无论写入excel还是数据库都可以。

2)Token鉴权接口访问

因为上一步骤对各个组件进行了详细说明,所以在这一步骤仅进行简单说明。

第一步,通过【生成记录】拼写URL。

第二步,通过【REST client】发起请求,获取包含Token的JSON字符串。

第三步,通过【JSON input】将JSON字符串中的Token拆分。

第四步,通过【Java代码】拼写第二次访问URL和BODY。

第五步,通过【REST client】再次发起请求(将之前获取的Token放入组件的Headers中),获取包含内容的JSON字符串。

第六步,通过【JSON input】将JSON字符串中的内容进行拆分。

这样就完成了Token鉴权的数据获取,流程中的两个字段拆分非必要,是我为了减少流中无用字段使用的。

基于以上,基本完成了Kettle对于接口访问的流程,其实【Java代码】中还有较多的内容,只是文档较少,不好研究。还有就是在实际业务中的分页,定时获取都没有进行设计处理,后面有时间再进行研究。

标签:

上一篇:涉猎越来越广 特斯拉将推出三款新车-每日热门
下一篇:最后一页
相关阅读
猜你喜欢
精彩推送
社科