Kettle學(xué)習(xí)筆記(四):接口請求和Java代碼
一、http請求方式
HTTP1.0定義了:GET、POST和HEAD方法。
HTTP1.1新增了:OPTIONS、PUT、DELETE、TRACE、CONNECT等方法。
雖然在HTTP1.1增加了PUT、DELETE等方法,但是一般已經(jīng)習(xí)慣使用GET和POST的開發(fā)人員,一般較少會使用新增的請求方法,新方法的增加讓請求更加規(guī)范,但是只使用GET和POST也可以滿足請求的所有需要(不然之前那么多年怎么用的)。
GET和POST的最大區(qū)別就是GET請求需要將參數(shù)拼在URL上,而POST請求則將參數(shù)放到BODY體中,比起GET的對外暴露POST相對安全。
以釘釘開放平臺的請求作為示例:
二、接口驗證方式
下面僅列舉幾種我在工作中常見的用戶身份驗證方式,并不涉及到里面詳細(xì)的技術(shù)拆解,簡單介紹下。
1)Token鑒權(quán)(JWT)
對使用Token鑒權(quán)技術(shù)的網(wǎng)站,在Kettle中一般需要發(fā)起兩次請求。
第一次,通過Key和Secret獲取accessToken。
第二次,將accessToken放到請求的Headers中,攜帶其他參數(shù)進行請求。
2) MD5加鹽
MD5屬于比較常見的加密算法,由于MD5算法屬于單向加密,需要暴露出相關(guān)的請求參數(shù),但是暴露相關(guān)請求參數(shù)會導(dǎo)致不安全,怎么解決這個問題呢?那就是加鹽。
通信雙方約定一個salt值,然后將其他參數(shù)和鹽值一起進行加密,這樣加密后的數(shù)據(jù)很難進行破解。這里的salt值,其實類似于對稱加密中的公鑰,只不過,收到請求的一方是通過公鑰解密,而MD5的salt值是雙方都通過salt值加密。
舉例如下:
key=harry&time=129187939&hash=BF04A55B30CFF562F7ADD9F054AB7FFB,被請求方通過明文key獲取當(dāng)前key的salt值,然后將相關(guān)參數(shù)加上salt值按約定方式加密,得出相同的hash值,就可以確定是對的人!
3) RSA非對稱加密
RSA是非對稱加密比較有代表性的一種。非對稱加密擁有一對密鑰:公鑰+私鑰。請求方通過公鑰進行加密,然后被請求方通過私鑰進行解密。非對稱加密不需要在請求時暴露參數(shù),對隱私數(shù)據(jù)有更好的保護作用,比如請求涉及到隱私信息的。
舉例如下:
{"id": "xxx","phone":"199xxx","idCard":"1100xxx","name":"張三","workName":"xx單位"}
三、Java代碼使用
Kettle中支持嵌入Java代碼。加入一個新的Java代碼,然后從左側(cè)拉入一個main方法,中間的部分是給我們寫業(yè)務(wù)邏輯用的。輸入輸出字段可以從Input fields和Output fields查看。其實這部分內(nèi)容主要是用來拼寫請求參數(shù)和加密參數(shù)用的。

需要引用什么包,在頂部import即可。聽說可以將外部包放到Kettle目錄下的/lib路徑中,然后再進行引用,我沒有進行嘗試。

四、示例
1)MD5加鹽接口訪問

第一步,通過【生成記錄】寫入URL。

第二步,通過【Java代碼】拼裝請求參數(shù)和MD5加密加鹽。

第三步,通過【REST client】發(fā)起請求。

第四步,通過【JSON input】拆分返回的JSON數(shù)據(jù)。


拆分完成后的數(shù)據(jù)無論寫入excel還是數(shù)據(jù)庫都可以。
2)Token鑒權(quán)接口訪問

因為上一步驟對各個組件進行了詳細(xì)說明,所以在這一步驟僅進行簡單說明。
第一步,通過【生成記錄】拼寫URL。
第二步,通過【REST client】發(fā)起請求,獲取包含Token的JSON字符串。
第三步,通過【JSON input】將JSON字符串中的Token拆分。
第四步,通過【Java代碼】拼寫第二次訪問URL和BODY。
第五步,通過【REST client】再次發(fā)起請求(將之前獲取的Token放入組件的Headers中),獲取包含內(nèi)容的JSON字符串。
第六步,通過【JSON input】將JSON字符串中的內(nèi)容進行拆分。
這樣就完成了Token鑒權(quán)的數(shù)據(jù)獲取,流程中的兩個字段拆分非必要,是我為了減少流中無用字段使用的。

基于以上,基本完成了Kettle對于接口訪問的流程,其實【Java代碼】中還有較多的內(nèi)容,只是文檔較少,不好研究。還有就是在實際業(yè)務(wù)中的分頁,定時獲取都沒有進行設(shè)計處理,后面有時間再進行研究。