postman(⼗⼆):发送携带md5签名、随机数等参数的请求
想起来之前在借助百度翻译接⼝做翻译⼩⼯具的时候,需要把参数进⾏md5加密后再传输。
⽽在平时的接⼝测试⼯作中难免会遇到类似这种请求参数,⽐如md5加密、时间戳、随机数等等。固然可以先计算出准确的参数,但这样的话修改成本就太⼤了,每次都得改,所以我们在发送请求前需要提前构造好参数供请求调⽤。
像随机数、md5数字签名这种通过python可以很便捷的实现。这⾥主要说⼀下如何在postman中实现⾃动⽣成md5等并调⽤,算是继续补充postman的使⽤技巧吧
继续拿百度通⽤翻译接⼝作为栗⼦:
接⼝⽂档如下
然后是⼀些说明
(1)签名是为了保证调⽤安全,使⽤MD5算法⽣成的⼀段字符串,⽣成的签名长度为 32位,签名中的英⽂字符均为⼩写格式;
(2)为保证翻译质量,请将单次请求长度控制在 6000 bytes以内。(汉字约为2000个);
(3)签名⽣成⽅法如下:
1、将请求参数中的 APPID(appid), 翻译query(q, 注意为UTF-8编码), 随机数(salt), 以及平台分配的密钥(可在查看)
按照 appid+q+salt+密钥的顺序拼接得到字符串1。
2、对字符串1做md5,得到32位⼩写的sign。
官⽅举例:将apple从英⽂翻译成中⽂:
请求参数:
q=apple
from=en
to=zh
appid=2015063000000001
salt=1435660288
平台分配的密钥: 12345678
⽣成sign:
>拼接字符串1
拼接appid=2015063000000001+q=apple+salt=1435660288+密钥=12345678
得到字符串1 =2015063000000001apple143566028812345678
>计算签名sign(对字符串1做md5加密,注意计算md5之前,串1必须为UTF-8编码)
sign=md5(2015063000000001apple143566028812345678)
sign=f89f9594663708c1605f3d736d01d2d4
完整请求为:
api.fanyi.baidu/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4
OK,下⾯进⼊正题,介绍如何在postman中⽣成随机数、md5签名,然后调⽤
1.⾸先要在Pre-request Script标签中编写脚本
因为要⾃动⽣成随机数、md5签名等传给接⼝,然后调⽤接⼝,即在请求前做好这些准备⼯作,所以要在Pre-request Script标签中编写脚本
2.编写思路
(1)把⼀些固定参数以及会被其他参数引⽤到的参数设置为环境变量,所以先在环境变量中添加appid和secretKey
postman的中文翻译
(2)sign=appid+q+salt+密钥的MD5值,可以看到要翻译的字符串q也是⽣成sign的⼀部分,但是每次翻译的内容不同,意味着q是变化的,所以不能把它写死到postman的params 中。
开始想把q直接设置成环境变量,然后在Pre-request Script中读取这个环境变量,结果发现在Pre-request Script中是⽆法通过{{}}引⽤环境变量的;
然后就换个思路,还是把q写到Pre-request Script中,先把它定义为⼀个字符串,然后再创建⼀个环境变量,把q的值传给这个环境变量,最后在params中引⽤这个环境变量就好了(要翻译不同内容时,⾃⾏修改q的内容)
下⾯是完整的脚本和注释
//定义要翻译的字符串
var query = "霸王别姬";  //每次翻译不同内容时,在这⾥修改
//获取预先设置为环境变量的appid和secretKey
appid = ("appid");
secretKey = ("secretKey");
//定义⼀个随机数(32768, 65536)之间
var salt = parseInt(Math.random()*(32769)+32768,10);
//将随机数转换为字符串
var s = String();
console.log(salt);
//将⽣成的随机数设置为环境变量,⽅便传参
//定义⼀个由appid、要翻译的字符串、随机数、密钥组合成⼀个字符串
var str = appid + query + salt + secretKey;
console.log(str);
/
/将str进⾏md5加密
var strmd5= CryptoJS.MD5(str).toString();
//let md5Str = CryptoJS.MD5(str).toString();
console.log(strmd5);
调⽤成功的话就是下⾯这个样⼦

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。