postman自动生成签名
2017-02-12 11:05 wish123 阅读(5643) 评论(0) 编辑 收藏 举报一、全局变量方式
1. 在全局变量添加key:value分别是autoSign和var sign={toUnicode:function(s){return s.replace(/([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g,function(newStr){return"\\u"+newStr.charCodeAt(0).toString(16)})},run:function(token){if(typeof token=="undefined"){token="6fe383bcacc";if(globals.defaultToken){token=globals.defaultToken}}var self=this;var tmpArr={};var reqData=request.data;if(_.isString(reqData)){var reqType=request.headers['Content-Type'];if(_.endsWith(reqType,'json')){reqData=JSON.parse(reqData)}else if(_.endsWith(reqType,'xml')){reqData=xml2Json(reqData).xml}}if(_.isArray(reqData)){reqData=_.sortByOrder(reqData,["key"],['asc']);_(reqData).forEach(function(item){if(!item.disabled){if(_.isString(item.value)){item.value=self.toUnicode(item.value)}tmpArr[item.key]=item.value}}).value()}else if(_.isObject(reqData)){var keys=_.sortBy(_.keys(reqData));_(keys).forEach(function(key){if(_.isString(reqData[key])){reqData[key]=self.toUnicode(reqData[key])}tmpArr[key]=reqData[key]}).value()}if(tmpArr.iRequestTime&&globals.timestamp){tmpArr.iRequestTime=globals.timestamp}delete tmpArr.sSign;var json=JSON.stringify(tmpArr).replace(/\\\\u/g,'\\u');var sign=CryptoJS.MD5(token+"_xxxxxxxxxx_"+json,{asString:true}).toString();sign=CryptoJS.MD5(sign+"_xxxxxxxxxx_"+token,{asString:true}).toString();postman.setGlobalVariable("sign",sign)}}
2. 在Pre-request Script添加 eval(globals.autoSign);sign.run("6fe383bcacc");
二、直接执行方式
直接在Pre-request Script添加
var sign = { toUnicode: function(s) { return s.replace(/([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g, function(newStr) { return "\\u" + newStr.charCodeAt(0).toString(16); }); }, run: function(token) { if (typeof token == "undefined") { token = "6fe383bcacc"; if (globals.defaultToken) { token = globals.defaultToken } } var self = this; var tmpArr = {}; var reqData = request.data; if (_.isString(reqData)) { var reqType = request.headers['Content-Type']; if (_.endsWith(reqType, 'json')) { reqData = JSON.parse(reqData) } else if (_.endsWith(reqType, 'xml')) { reqData = xml2Json(reqData).xml } } if (_.isArray(reqData)) { reqData = _.sortByOrder(reqData, ["key"], ['asc']); _(reqData).forEach(function(item) { if (!item.disabled) { if (_.isString(item.value)) { item.value = self.toUnicode(item.value); } tmpArr[item.key] = item.value } }).value() } else if (_.isObject(reqData)) { var keys = _.sortBy(_.keys(reqData)); _(keys).forEach(function(key) { if (_.isString(reqData[key])) { reqData[key] = self.toUnicode(reqData[key]); } tmpArr[key] = reqData[key] }).value() } if (tmpArr.iRequestTime && globals.timestamp) { tmpArr.iRequestTime = globals.timestamp } delete tmpArr.sSign; var json = JSON.stringify(tmpArr).replace(/\\\\u/g, '\\u'); var sign = CryptoJS.MD5(token + "_xxxxxxxxxx_" + json, { asString: true }).toString(); sign = CryptoJS.MD5(sign + "_xxxxxxxxxx_" + token, { asString: true }).toString(); postman.setGlobalVariable("sign", sign) } } sign.run("6fe383bcacc");
注意:your token可以改成你自己的token哦
三、引用方式
在body中sign所在的value填写 {{sign}}即可
==============================================================
详细图文教程如下:
第一步
在全局变量添加key:value分别是autoSign和var sign={toUnicode:function(s){return s.replace(/([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g,function(newStr){return"\\u"+newStr.charCodeAt(0).toString(16)})},run:function(token){if(typeof token=="undefined"){token="6fe383bcacc";if(globals.defaultToken){token=globals.defaultToken}}var self=this;var tmpArr={};var reqData=request.data;if(_.isString(reqData)){var reqType=request.headers['Content-Type'];if(_.endsWith(reqType,'json')){reqData=JSON.parse(reqData)}else if(_.endsWith(reqType,'xml')){reqData=xml2Json(reqData).xml}}if(_.isArray(reqData)){reqData=_.sortByOrder(reqData,["key"],['asc']);_(reqData).forEach(function(item){if(!item.disabled){if(_.isString(item.value)){item.value=self.toUnicode(item.value)}tmpArr[item.key]=item.value}}).value()}else if(_.isObject(reqData)){var keys=_.sortBy(_.keys(reqData));_(keys).forEach(function(key){if(_.isString(reqData[key])){reqData[key]=self.toUnicode(reqData[key])}tmpArr[key]=reqData[key]}).value()}if(tmpArr.iRequestTime&&globals.timestamp){tmpArr.iRequestTime=globals.timestamp}delete tmpArr.sSign;var json=JSON.stringify(tmpArr).replace(/\\\\u/g,'\\u');var sign=CryptoJS.MD5(token+"_xxxxxxxxxx_"+json,{asString:true}).toString();sign=CryptoJS.MD5(sign+"_xxxxxxxxxx_"+token,{asString:true}).toString();postman.setGlobalVariable("sign",sign)}}
图一
第二步
在Pre-request Script添加代码
eval(globals.autoSign);
sign.run("your token");
图二
第三步
在body中把sSign参数的值设置为{{sign}}
图三
说明:
1. sign.run()的参数可以不传,如果不传会默认使用全局变量中的defaultToken的值(见图一)
2. 全局变量添加菜单
执行结果: