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);
- 然后在業務接口的頭信息中,用{{token}}方式從環境變量中獲取token實際值。