Postman 之添加请求时间和签名 pre-request Script
// 说明:JS时间Date格式化参数
// 参数:格式化字符串如:'yyyy-MM-dd hh:mm:ss'
// 结果:如2016-06-01 10:09:00
Date.prototype.format = function (fmt) {
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), // 季度
"S": this.getMilliseconds() // 毫秒
};
// 根据y的长度来截取年
if (/(y+)/.test(fmt)){
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o){
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
}
return fmt;
}
var appSecret = "xxxxxx";
var datetime=new Date().format("yyyy-MM-dd hh:mm:ss");
var sortKeys = Object.keys(request.data).sort(); //请求参数名按照ASCII码升序排序
var str = []; //拼接待签名字符串
for (var i = 0; i < sortKeys.length; i++) {
if(sortKeys[i] == "sign" || request.data[sortKeys[i]] === ""){ // == 宽松相等,隐性类型转换,值相等,返回true;
continue; // === 严格相等,值和类型都相等,返回true
}
if(sortKeys[i] == "datetime"){
str.push(sortKeys[i] + datetime);
continue;
}
str.push(sortKeys[i] + request.data[sortKeys[i]]);
}
var preSign = str.join("");
preSign = CryptoJS.MD5(preSign).toString().toUpperCase(); // 签名规则
var sign = CryptoJS.MD5(preSign+appSecret).toString().toUpperCase();
//pm.environment.unset("sign");
//pm.environment.unset("datetime");
pm.environment.set("sign", sign);
pm.environment.set("datetime", datetime);