POSTMAN是常用的接口測試工具
如果需要生成簽名之類的動態變量,可以通過Pre-request Script腳本來實現
通俗說:它是js的語法,同時內置了postman的方法,可以輕松實現各種算法,截圖如下:

MD5簽名
先模擬一個簡單的例子,從body中獲取變量,然后手工拼接並生成MD5值
代碼如下:
/**
* 通過request.data獲取body的內容,這個是postman內置變量
* 常用內置參數如下:
* request 獲取請求的參數,包括頭和請求體
* responseHeaders 返回值的header
* responseBody 返回值的body
* responseCode 返回值的http code
*/
var params = request.data;
/**
* MD5加簽規則:
* 1、根據key排序(這里就直接根據順序拼接了)
* 2、如果value不為空,就拼接如下:key1=value1&key2=value2 生成原串
* 3、原串后+鹽值,比如salt=shengpay,最終的摘要串=key1=value1&key2=value2shengpay
* 4、消息摘要,並將結果轉為大寫
*
*/
//連接符
var join = '&';
//鹽值
var MD5_SALT_SUFFIX = "shengpay";
var md5salt = params.subMerchantNo + MD5_SALT_SUFFIX;
var md5String = "orderId=" + params.orderId + join +
"subMerchantNo=" + params.subMerchantNo + join +
"terminalId=" + params.terminalId + md5salt;
console.log("md5String---->" + md5String);
var md5 = CryptoJS.MD5(md5String).toString().toUpperCase(); //MD5摘要后並轉換為大寫
console.log("md5 digest---->" + md5);
//放入環境變量
//pm.environment.set("sign_message",md5)
postman.setGlobalVariable("md5msg", md5);
賦值:

運行時候,打開控制台,就可以看到console.log()在控制台打印的日志啦

代碼很簡單,直接看注釋即可,唯一需要提一下,這里MD5簽名使用到了CryptoJS類庫,這是js的一個加解密的類庫,支持AES、RSA等各種加解密算法;
SHA1簽名
這里稍微復雜點,從body獲取參數放入數組,然后排序,然后根據規則拼接字符串,最后生成SHA1簽名串並使用十六進制編碼;
直接看代碼:
/** * 通過request.data獲取body的內容,這個是postman內置變量 * 常用內置參數如下: * request 獲取請求的參數,包括頭和請求體 * responseHeaders 返回值的header * responseBody 返回值的body * responseCode 返回值的http code */ var params = request.data; //body中參數放入數組 var list = [params.subsystemId,params.clientId,params.account,params.timestamp]; console.log("list---->" + list); // 字段排序:這里建議使用默認的排序,優先比較字符的第一個,相同則比對第二個... //list.sort(function(a, b){ //return b-a; //數字的排序 // return b.localeCompare(a); //字符串排序 //}); list.sort(); console.log("list ---->" + list); //字段重新組裝拼接 var tmp=''; for(var i=0;i<list.length;i++){ tmp += list[i]; } console.log("tmp ---->" + tmp); //生成簽名串:這里使用SHA1算法並使用十六進制編碼 //CryptoJS-為JavaScript提供了各種各樣的加密算法 //作者:CryptoJS<>(https://code.google.com/p/crypto-js/) var signHmacSHA1=CryptoJS.SHA1(tmp).toString(CryptoJS.enc.Hex).toUpperCase(); console.log("sign ---->" + signHmacSHA1); //放入環境變量 //pm.environment.set("sha1msg",signHmacSHA1) postman.setGlobalVariable("sha1msg", signHmacSHA1);
