1. 程式人生 > 其它 >Postman預處理自動生成簽名引數(sign)

Postman預處理自動生成簽名引數(sign)

Postman預處理自動生成簽名引數(sign)
很多介面會有簽名引數,為了防止被惡意篡改引數,所以對所有引數用一定規則排列後+鹽再MD5加密。

有些開發可能配置了在測試環境暫時遮蔽簽名,或者用一個通用簽名。但其實完全可以在不破壞系統完整性的前提下,又能很輕鬆的讓postman根據規則自動生成簽名引數來進行測試。


這2條語句可以分別獲得body引數和url中的query引數。

 

let queryParam = pm.request.url.query.members;
let param = request.data;
let key = "xxxxxxxxxxxx"; //簽名Key

try
{ let json = JSON.parse(param); //序列化JSON BODY param = json; }catch(err){ //BODY不是JSON格式 } //Get & 合併GET和POST引數 for (let i in queryParam){ param[queryParam[i].key] = queryParam[i].value; } //Post //取key var keys = []; for (let k in param){ if (k == 'sign'){ continue; } keys.push(k); }
//排序 keys.sort(); //取value var kv = []; for (let k of keys){ kv.push(k + '=' + encodeURIComponent(param[k])) //urlencode編碼 } //拼接 var sign = kv.join('&'); sign = sign + key; console.log(sign); sign = CryptoJS.MD5(sign).toString(); console.log(sign); //設定環境變數 postman.setEnvironmentVariable("sign", sign);

PS: 不同公司、不同介面規則不同,例如不需要urlencode、不需要排序的請自行修改指令碼

再用{{sign}}從環境變數中取出sign值。


成功請求


這段指令碼相容GET引數、以及表單形式的BODY和JSON形式的BODY


保持登入狀態
通過設定環境變數,我們可以把登入介面返回的認證資訊存起來,之後其他介面可以直接從環境變數中獲取。達到保持登入狀態的效果。

先在登入介面的Tests中獲取token引數並放到環境變數中


 

//設定token
var responeData = JSON.parse(responseBody); //把響應結果轉為JSON物件
pm.environment.set("token", responeData.data.token); //從響應結果JSON物件中獲取到token引數,並放到環境變數
console.log("token: " + responeData.data.b_token); 
  1. 然後在業務介面的頭資訊中,用{{token}}方式從環境變數中獲取token實際值。