51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2395|回复: 0
打印 上一主题 下一主题

[转贴] PostMan Pre-request Script 生成api签名

[复制链接]
  • TA的每日心情
    无聊
    前天 09:06
  • 签到天数: 530 天

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2019-1-4 16:33:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    PostMan Pre-request Script 生成api签名

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

    PostMan设置提交参数



    这里有两个东西我们需要在 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

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 03:34 , Processed in 0.063135 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表