postman(十二):發送攜帶md5簽名、隨機數等參數的請求


想起來之前在借助百度翻譯接口做翻譯小工具的時候,需要把參數進行md5加密后再傳輸。
而在平時的接口測試工作中難免會遇到類似這種請求參數,比如md5加密、時間戳、隨機數等等。固然可以先計算出准確的參數,但這樣的話修改成本就太大了,每次都得改,所以我們在發送請求前需要提前構造好參數供請求調用。
像隨機數、md5數字簽名這種通過python可以很便捷的實現。這里主要說一下如何在postman中實現自動生成md5等並調用,算是繼續補充postman的使用技巧吧
 
繼續拿百度通用翻譯接口作為栗子:
接口文檔如下
然后是一些說明
(1)簽名是為了保證調用安全,使用MD5算法生成的一段字符串,生成的簽名長度為 32位,簽名中的英文字符均為小寫格式;
(2)為保證翻譯質量,請將單次請求長度控制在 6000 bytes以內。(漢字約為2000個);
(3)簽名生成方法如下:
1、將請求參數中的 APPID(appid), 翻譯query(q, 注意為UTF-8編碼), 隨機數(salt), 以及平台分配的密鑰(可在 管理控制台查看)
按照 appid+q+salt+密鑰 的順序拼接得到字符串1。
2、對字符串1做md5,得到32位小寫的sign。
官方舉例:將apple從英文翻譯成中文:
請求參數:
q=apple
from=en
to=zh
appid=2015063000000001
salt=1435660288
平台分配的密鑰: 12345678
生成sign:
>拼接字符串1
拼接appid=2015063000000001+q=apple+salt=1435660288+密鑰=12345678
得到字符串1 =2015063000000001apple143566028812345678
>計算簽名sign(對字符串1做md5加密,注意計算md5之前,串1必須為UTF-8編碼)
sign=md5(2015063000000001apple143566028812345678)
sign=f89f9594663708c1605f3d736d01d2d4
完整請求為:
http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4
OK,下面進入正題,介紹如何在postman中生成隨機數、md5簽名,然后調用
1.首先要在Pre-request Script標簽中編寫腳本
因為要自動生成隨機數、md5簽名等傳給接口,然后調用接口,即在請求前做好這些准備工作,所以要在Pre-request Script標簽中編寫腳本
2.編寫思路
(1)把一些固定參數以及會被其他參數引用到的參數設置為環境變量,所以先在環境變量中添加appid和secretKey
(2)sign=appid+q+salt+密鑰 的MD5值,可以看到要翻譯的字符串q也是生成sign的一部分,但是每次翻譯的內容不同,意味着q是變化的,所以不能把它寫死到postman的params中。
開始想把q直接設置成環境變量,然后在Pre-request Script中讀取這個環境變量,結果發現在Pre-request Script中是無法通過{{}}引用環境變量的;
然后就換個思路,還是把q寫到Pre-request Script中,先把它定義為一個字符串,然后再創建一個環境變量,把q的值傳給這個環境變量,最后在params中引用這個環境變量就好了(要翻譯不同內容時,自行修改q的內容)
 
下面是完整的腳本和注釋
//定義要翻譯的字符串
var query = "霸王別姬";  //每次翻譯不同內容時,在這里修改
pm.environment.set("q", query);  //設置一個環境變量q,接收源字符串
 
//獲取預先設置為環境變量的appid和secretKey
appid = pm.environment.get("appid");
secretKey = pm.environment.get("secretKey");
 
//定義一個隨機數(32768, 65536)之間
var salt = parseInt(Math.random()*(32769)+32768,10);
//將隨機數轉換為字符串
var s = salt.toString();
console.log(salt);
//將生成的隨機數設置為環境變量,方便傳參
pm.environment.set("salt", salt);
 
//定義一個由appid、要翻譯的字符串、隨機數、密鑰組合成一個字符串
var str = appid + query + salt + secretKey;
console.log(str);
 
//將str進行md5加密
var strmd5= CryptoJS.MD5(str).toString();
//let md5Str = CryptoJS.MD5(str).toString();
console.log(strmd5);
pm.environment.set("sign", strmd5);  //將加密后的簽名設置為環境變量方便后續調用
postman的params中按照如下方式引用
調用成功的話就是下面這個樣子

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM