postman接口请求之签名生成
在经历过上次的本地文件丢失之后,虽然万幸的找回来的,我还是决定把它给记录下来。好记性不如破笔头,好本地不如云端靠谱呀。需要查找自己卸载软件之前的本地接口文件,可以参考下
在之前的测试接口中,虽然接口很多但规则都是一致,再加上接口api的提供,很容易就能获取到自己想要的接口内容。然而这次的接口多了一个签名拼接,这可让我下一番功夫。
接口要求是这样的:接口调用采用了系统级参数+应用级参数+签名的方式调用。系统级参数包括:appkey,接口名称,时间戳,签名等。而签名则是根据所有的系统级参数和应用级参数的key_value拼接起来。咋一看有点麻烦,看了下软件方大佬提供的不知道什么语言写的工具类果断放弃,所以只有在postman上写js拼接了
应该有小伙伴不知道postman可以写js代码,答案是可以的。postman作为一款功能强大的网页调试、HTTP请求发送及接口测试用例运行的工具,能够模拟各种HTTP Request如GET、POST 、header等等 。同时,请求中还可以发送文件(图片、文本文件等)、额外的header,js等,实现特定的接口测试,话不多说,举个栗子:
系统参数+应用参数 这个就很简单了
把需要的参数和值填写进去就好了,下面是最主要的,生成签名:
前面咱们也说了postman作为一个优秀的工具是完全支持js代码的,所以咱们就用js代码把这些参数拼接起来,并加密生成一个签名,下面是我这个需求的js拼接
这是具体代码:
var params = request.data;//声明一个变量
//然后把body中系统参数和应用参数放入数组中进行拼接
var list = ["bc53c3ce5bb0c8fe47d7894c51a09396"+"AddParams"+params.AddParams + "app_key" + params.app_key + "method" + params.method + "timestamp" + params.timestamp + "v" + params.v];
//输出这个数组
//console.log("list ------------" + list);
//字段排序:使用默认排序,
list.sort(function (a, b) {
return b - a; //数字的排序
return b.localeCompare(a); //字符串排序
});
//list.sort();
console.log("list---->" + list);
//字段重新组装拼接
var tmp = '';
for (var i = 0; i < list.length; i++) {
tmp += list[i];
}
console.log("tmp ---->" + tmp);
//byte[]bytes=md5.ComputeHash(Encoding.UTF8.GetBytes(query.ToString()));
//进行MD5加密转换字符串,并转换为大写,
var signHmac = CryptoJS.MD5(tmp).toString(CryptoJS.enc.Hex).toUpperCase();
//pm.globals.unset("variable_key");
//var signHmac=byte2hex(md5(tmp)).toString("X");
console.log("sign ---->" + signHmac);
这样就生成了需要的应用参数,再去请求就没有问题了
需要注意的是:
- 我这里使用了按参数字母排序拼接方式,不用的可以忽略
- 签名使用的是MD5加密转换32位大写字母的格式
- 在控制台中我们可以查看输出的数据:
打完,散伙。。。