一、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代码】中还有较多的内容,只是文档较少,不好研究。还有就是在实际业务中的分页,定时获取都没有进行设计处理,后面有时间再进行研究。
标签:
04-07 17:09:31
04-07 16:14:28
04-07 15:14:31
04-07 14:14:03
04-07 13:17:18
04-07 12:11:17