当前位置: 首页 > 工具软件 > pre-agent > 使用案例 >

postman使用pre-request script

洪博涛
2023-12-01

直接上代码

//预置属性
var SECRET = “”;
var SERVER_SECRET_KEY = ‘’;
var APIKEY_KEY = ‘apiKey’
var apiKey = ‘’;
var seed = 1234;
var nonce = 5678;

//init接口插入全局变量apiKey 其余拿
if (pm.request.url.getPath() === ‘/user/init’) {
apiKey = new Date().valueOf()
pm.globals.set(APIKEY_KEY,apiKey);
}else{
apiKey = pm.globals.get(APIKEY_KEY);
}

//增加query参数
pm.request.addQueryParams(“appid=cece”);
pm.request.addQueryParams(“vs=9.23.2”);
pm.request.addQueryParams(“apikey=”+apiKey);
pm.request.addQueryParams(“agent=ios.cc”);
pm.request.addQueryParams(“lang=zh-CN”);
pm.request.addQueryParams(“appType=cece”);
pm.request.addQueryParams(“channel=huawei”);
pm.request.addQueryParams(“deviceId=doclever”);
pm.request.addQueryParams(“iosidfa=doclever”);
pm.request.addQueryParams(“brand=doclever”);
pm.request.addQueryParams(“model=doclever”);
pm.request.addQueryParams(“network=wifi”);
pm.request.addQueryParams(“carrier=doclever”);
pm.request.addQueryParams(“uuid=docleveruuid”);
pm.request.addQueryParams(“seed=”+seed);

//参数转对象,用于后面验签
var waitSignParams = {};
var urlres= pm.request.url.getQueryString()
urlres = urlres.replace(/&/g, ‘“,”’).replace(/=/g, ‘“:”’);
var reqDataString = ‘{"’ + urlres + ‘"}’;
var query = JSON.parse(reqDataString);

//对象复制
Object.assign(waitSignParams, query);
waitSignParams[‘nonce’] = nonce;

//排序。验签方法
function sort() {
if (pm.method === “POST”) {
waitSignParams[‘body’] = JSON.stringify(body);
};

var sortedKeys = Object.keys(waitSignParams).sort()
var queryStr = '';
sortedKeys.forEach(function (key) {
    if (key !== 'sign') {
        queryStr += key + '=' + waitSignParams[key] + '&';
    }
})

return queryStr.substr(0, queryStr.length - 1);

}

//签名方法
function sign() {
var waitSign = sort() + SECRET;
if (pm.request.url.getPath() === ‘/user/init’) {
return CryptoJS.MD5(waitSign).toString().toUpperCase()
} else {
console.log(CryptoJS.MD5(waitSign)+getServerSecret())
return CryptoJS.MD5(CryptoJS.MD5(waitSign)+getServerSecret()).toString().toUpperCase();
}
}

function getServerSecret() {
return SERVER_SECRET_KEY
}

pm.request.addHeader({key: “Nonce”, value: nonce})

pm.request.addQueryParams(“sign=”+sign());

大概流程:
1.init接口生成apikey存入环境变量
2.login接口讲apikey以及生成的密钥存到数据库
3.用环境变量中的apikey调用其他接口

关于postman的pre-javascript

1.右面有提示,关于预置属性
2.想拿到关于url相关属性用pm.request.url.xxx(eg:pm.request.url.getQueryString())
3.增加参数pm.request.addQueryParams

 类似资料: