Postman預處理自動生成簽名引數(sign)
阿新 • • 發佈:2022-03-16
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實際值。