51Testing软件测试论坛

标题: PostMan Pre-request Script 生成api签名 [打印本页]

作者: 测试积点老人    时间: 2019-1-4 16:33
标题: PostMan Pre-request Script 生成api签名
PostMan Pre-request Script 生成api签名

api接口都会有签名校验,这个校验在我们api测试的时候很不方便,这里来利用postman 前置处理来生成sig 提交。

PostMan设置提交参数
[attach]120656[/attach]


这里有两个东西我们需要在 Pre-request Script 中预生成来填入提交数据中。

  1. sig:签名串
  2.   create_time:提交时间
复制代码

##Pre-request Script 预处理,生成sig

  1. var appid = 'your appid';
  2.     var appkey = 'your appkey';
  3.    //获取当前时间
  4.     function createTime() {
  5.         return (new Date()).valueOf();
  6.     }
  7.     var time = createTime();
  8.     var method = request.method;//提交方式
  9.     delete request.data["sig"];//将sig排除排序
  10.     console.log(request.data);
  11.     var keys = Object.keys(request.data), i, len = keys.length;
  12.       keys.sort();//根据key经行排序
  13.      console.log(keys)
  14.     // Build the request body string from the Postman request.data object
  15.     var requestBody = "";
  16.     var firstpass = true;
  17.    // 构造数据为 key=param&key=param....字符串
  18.     for(var index in keys){
  19.           if(!firstpass){
  20.             requestBody += "&";
  21.         }
  22.         if(keys[index]=="create_time"){
  23.             request.data[keys[index]]=time;
  24.             console.log(request.data[keys[index]]);
  25.         }
  26.         requestBody += keys[index] + "=" + request.data[keys[index]];
  27.         firstpass = false;
  28.     }
  29.    
  30.       console.log(requestBody);
  31.     //将构造数据url编码
  32.      var encodeURIdata = encodeURIComponent(requestBody);
  33.      console.log(encodeURIdata);
  34.     appkey=appkey+"&";
  35.     //生成密钥
  36.     var signHmacSHA1=CryptoJS.HmacSHA1(encodeURIdata, appkey);
  37.     console.log(signHmacSHA1);
  38.     var base64sha256 = CryptoJS.enc.Base64.stringify(signHmacSHA1);
  39.        console.log(base64sha256);
  40.     //    将变量放入postman 变量中
  41.     postman.setEnvironmentVariable('appid', appid);
  42.     postman.setEnvironmentVariable('create_time', time);
  43.     postman.setEnvironmentVariable('signature', base64sha256);
复制代码

这样每次提交数据就能 预先构造出sig然后提交了。






欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2