• postman自动生成签名


    查看详细图文教程↓

    一、全局变量方式

    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. 全局变量添加菜单

    执行结果:

  • 相关阅读:
    非GUI运行Jmeter,jtl文件没有响应数据的解决办法
    Fiddler抓取APP接口
    CentOS 7.x关闭/开启防火墙出现Unit iptables.service failed to load: No such file or directory问题解决
    Jmeter+Ant+Jenkins接口自动化持续集成环境搭建(Linux)
    Jenkins持续集成环境部署
    性能测试流程介绍
    MySQL性能优化
    Linux监控命令之==>ps
    Linux监控命令之==>lsof
    Zabbix监控基础
  • 原文地址:https://www.cnblogs.com/wish123/p/6390586.html
Copyright © 2020-2023  润新知