postman調試api接口時,常遇到兩個問題:
1.環境分為開發環境,測試環境,正式環境,如何只寫一個接口,通過切換postman環境來實現不同環境的接口調用?
2. api接口請求時往往會添加,來源(Source),簽名時間(Sign-Time),簽名(Sign).同一個接口不同時間段請求,簽名時間,簽名也不同,如何實現每次自動獲取簽名時間,簽名?
案例及解決:
問題1:postman中可以設置環境,在不同的環境分別設置環境變量(url),然后在接口中使用 {{url}}來替換. 如下圖
問題2:因本人簽名時間/簽名放在請求頭里,以下以此為例.
1).可以在postman全局變量或環境變量增加key/value 分別對應如下 wdsign/js代碼,代碼如下
var wdsign = { getSource: function() { var source = pm.environment.get('Source'); if(source === undefined) { source = 'default_source'; pm.environment.set("Source", source); } return source; }, getSignTime: function() { return parseInt(new Date().getTime() / 1000); }, getSign: function(source, signTime) { let data = request.data; let dataString = '' if (typeof data === 'object') { Object.keys(data).sort().forEach(function(ele, index) { let value = data[ele] if (typeof value === 'object') { value = JSON.stringify(value) } dataString += ele + '=' + value }) } dataString += source; dataString += signTime; return CryptoJS.MD5(dataString).toString();; }, run: function() { var source = this.getSource(); var signTime = this.getSignTime(); var sign = this.getSign(source, signTime); pm.environment.set("Sign-Time", signTime); pm.environment.set("Sign", sign); } }
2).在請求頭中分別對應設置如下
3).在Pre-requestScript添加,代碼如下
eval(globals.wdsign);
wdsign.run();