PostMan高级用法,接口MD5+Secret签名Sign

简介: PostMan高级用法,接口MD5+Secret签名Sign

前言:新公司初来乍到,后台使用的是常见的appId+secret用md5加签方式验证接口数据完整性,苦于经理给的一个main方法去测试,每次弄都感觉很麻烦,最近开了postman的高级用法,测试成功觉得还是不错的,在这分享一下

首先说明,Tests是在接口响应后执行的脚本,而Pre-Request-Script是在接口请求前执行的脚本,这点注意。

然后进入postman,点击右上角这个按钮,可以查看当前的global变量,也就是全局变量,点击这个小眼睛可以看到当前已保存的全局变量。

点击Globals

这里可以预先设置一些全局的baseUrl、appId、secret等变量,以备后边直接拿来使用。

接下来开始正题:

登录

我们这里的登录接口需要一个account账号+password密码,然后我要做的是,把登录返回的cflag和jwttoken存入postman本地的全局变量中,然后其他接口需要用到这两个参数+当前时间戳和后端定义的secret通过MD5加签大写通过header传给后端进行加密验证,前边说到,Tests是方法执行之后触发的内容,然后我要获取到Cookie里的内容,下边是代码:

我用文字提示的那两个方法,大家点击左边就会出现对应的js代码。

因为postman内置了一个node.js库,所以几乎所有的js语法都支持,先别着急运行代码,点击左上角View→Show Postman Console可以弹出log窗口进行调试代码

代码:

var cookies = pm.request.headers.get("Cookie");//从返回值的拿到所有cookie
console.log("从返回cookie拿到:"+cookies);
var cookiesArr = cookies.split(";");//通过分号分隔为数组
console.log("分隔成数组:"+cookiesArr);
for(var i in cookiesArr){
    let index = cookiesArr[i].indexOf("=");//通过=等号将键值对分开
    let key = cookiesArr[i].substring(0,index);
    let value = cookiesArr[i].substring(index+1,cookiesArr[i].length);
    console.log("出现的下标:"+index+",key:"+key+",value"+value);
    pm.globals.set(key,value);//存入全局变量
}

然后运行:

图中红色框框分别代表我打印的console日志,具体格式大家可以看到,最后结果所有的cookie都根据key value存入了全局变量。

接下来是如何动态获取存入的全局变量,对接口进行加签。

调用

这里以意见反馈接口举例,说明写在图片里边,大家可以看下,代码我贴在图片下边

//var arr = pm.request.body.formdata;//获取传入的所有参数键值对数组
var arr = pm.request.body.urlencoded;
console.log("获取所有输入参数的一个数组:"+arr);
if(null!==arr){
    var secret = pm.globals.get("secret");
    var formData = arr.toString();
    var sign = getSign(formData,secret);
    pm.globals.set("sign", sign);
    pm.globals.set("time",Math.round(new Date()));
}
//md5 CryptoJS.MD5(str).toString().toUpperCase()
 
 
 
function S4() {
    return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}
 
/**
 *生成32位UUID 
 **/ 
function generateUUID() {
    return (S4() + S4() + S4() + S4() + S4() + S4() + S4() + S4());
}
/**
 * 签名方法
 **/
function getSign(params, kAppSecret) {
    let content;
    if (typeof params == "string") {
        content = params
    } else if (typeof params == "object") {
        var arr = [];
        for (var i in params) {
            arr.push(i + "=" + params[i]);
        }
        content = arr.join("&")
    }
    var urlStr = content.split("&").sort().join("&");
    var newUrl = urlStr + "&key=" + kAppSecret;
    console.log(newUrl);
    let sign = CryptoJS.MD5(newUrl).toString().toUpperCase();
    return sign.toUpperCase();
}

这是我的参数,由于是意见反馈,所以只有一个参数。

请求头:

这里的jwttoken和cflag是登录成功后在tests中存入的,sign和time是刚刚在pre的接口请求前会存入,appId是一开始手动设置进去的全局变量,这个是和后端对应的,强调一下,这种方式只是我们公司的接口签名方式,你们在使用的时候要按照自己的方式来;同时这里我还发现了一个小bug,我在第一步登录的时候存入的jwttoken和cflg使用{{}}获取的时候必须在前边加一个空格,不然就提示undefind,也就是{{ jwttoken}} {{cflag}}这个令我很郁闷,不知道为啥

后端验证签名的策略也是一样的

点击发送请求,看控制台打印

后端也能拿到这写数据,后端自己在后台使用同样的逻辑,拿到appId和后台存的secret带着参数进行md5验证然后对比sign是否一致即可验证参数值完整性,这里有人问我的jwttoken和cflg没用到啊,为什么还要发,因为不发过去的话,后台的认证是使用这两个参数作为登录的依据,如果不发送的话,会提示未登录。

相关文章
|
5月前
|
JSON JavaScript 测试技术
Postman接口测试工具详解
Postman接口测试工具详解
214 1
|
5天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
31 11
|
3月前
|
JSON Java 数据格式
使用postMan调试接口出现 Content type ‘multipart/form-data;charset=UTF-8‘ not supported“
本文介绍了使用Postman调试接口时遇到的“Content type ‘multipart/form-data;charset=UTF-8’ not supported”错误,原因是Spring Boot接口默认只接受通过`@RequestBody`注解的请求体,而不支持`multipart/form-data`格式的表单提交。解决方案是在Postman中将请求体格式改为`raw`并选择`JSON`格式提交数据。
使用postMan调试接口出现 Content type ‘multipart/form-data;charset=UTF-8‘ not supported“
|
2月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
45 0
|
5月前
|
存储
Postman 接口测试配置 Pre-request Script
Postman 接口测试配置 Pre-request Script
236 5
Postman 接口测试配置 Pre-request Script
|
4月前
|
XML Web App开发 数据挖掘
Postman接口测试工具全解析:功能、脚本编写及优缺点探讨
文章详细分析了Postman接口测试工具的功能、脚本编写、使用场景以及优缺点,强调了其在接口自动化测试中的强大能力,同时指出了其在性能分析方面的不足,并建议根据项目需求和个人偏好选择合适的接口测试工具。
139 1
|
4月前
|
Web App开发 JSON 测试技术
精通Postman接口测试:关联技术与自动化实践指南
这篇文章详细介绍了如何使用Postman进行接口测试,包括关联技术、自动化实践,以及如何通过环境变量和全局变量解决接口之间的关联性问题。
127 0
精通Postman接口测试:关联技术与自动化实践指南
|
5月前
|
XML JSON 测试技术
Postman接口测试工具详解
📚 Postman全攻略:API测试神器!📚 发送HTTP请求,管理集合,写测试脚本,集成CI/CD。从安装配置到环境变量、断言、数据驱动测试,一步步教你如何高效测试RESTful API。实战案例包含GET、POST、PUT、DELETE请求。用Newman在命令行跑集合,自动化测试不发愁!👉 [洛秋小站](https://www.luoqiu.site/) 学更多!🚀
91 1
|
5月前
|
JavaScript 前端开发
文本,wangEditor5教程-上传图片,在开发文档的菜单配置当中,去搜索里搜索图片,也可以找到,上传图片必须有服务端的图片,验证接口正确用postman,wangEditor的postman接口
文本,wangEditor5教程-上传图片,在开发文档的菜单配置当中,去搜索里搜索图片,也可以找到,上传图片必须有服务端的图片,验证接口正确用postman,wangEditor的postman接口
|
5月前
|
JSON 前端开发 测试技术
Postman 接口测试工具详解
在执行这些测试案例时,请确保遵循实际的API规范,并根据API的特定要求调整步骤和参数。
180 0