使用Postman测试需要授权的接口问题
作者:攻城狮_正 发布时间:2022-10-18 15:14:23
Postman是一款免费的http模拟请求工具,常用来测试开发接口。实际场景中,很多接口是需要授权才能使用。这就需要Postman获取授权,把返回的token保存,在调用其他接口时连同token一起传递。
我所在的项目基于spring全家桶,正常流程是:调用获取验证码接口 -> 登录接口 -> 调用业务接口 。
新建一个登录请求
"{{参数名}}"代表Postman的环境变量 captchaKey 调用获取验证码返回 captchaCode 验证码,因为是测试环境,固定8888
发送请求前执行代码
切换到 Pre-request Script ,编写请求验证码接口脚本
var captchaApi = pm.environment.get("sa-gateway-host") + "/sa-auth/captcha";
pm.sendRequest(captchaApi, function (err, response) {
//获取返回值
var responseBody =JSON.parse(response.text());
//判断返回值是否有data参数
if (responseBody.data) {
//如果有则此次验证通过
tests["first has data"] = true;
//获取需要的参数
var captchaKey = responseBody.data.captchaKey;
//打印获取的参数
console.log("response.data --> " + captchaKey);
//将值写入当前选中的环境中 变成环境变量
postman.setEnvironmentVariable("captchaKey", captchaKey);
}
});
登录后保存token
切换到 Tests ,编写请求登录后的处理脚本
//获取返回值
var response =JSON.parse(responseBody);
//判断返回值是否有data参数
if (response.access_token) {
//如果有则此次验证通过
tests["first has data"] = true;
//获取需要的参数
var access_token = response.access_token;
//打印获取的参数
console.log("access_token --> " + access_token);
//将值写入当前选中的环境中 变成环境变量
postman.setEnvironmentVariable("header-authorization", "Bearer "+access_token);
}
到这里,Postman模拟登录请求完成。
脚本基于javascript语法,对于web开发者非常简单。
Postman专用函数和更多用法参考:learning.postman.com/docs/writin…
测试
发送请求,在Postman控件台有输出日志
此时变量 captchaKey 和 header-authorization 的值是接口返回的值。
再新建一个接口,在header中传入登录后返回的授权信息。
不同系统的接口设计不一样。我的项目是在header中加入 Authorization 字段传递授权信息。
执行接口请求,返回成功。
举一反三
很多APP的接口会对数据加密。新建一个加密服务,用脚本使Postman在发送数据前先请求加密服务获取密文,再发送。然后处理返回结果,请求加密服务解密,就能实现接口测试了。
来源:https://juejin.cn/post/7109788100347297799


猜你喜欢
- kmp算法kmp算法用于字符串的模式匹配,也就是找到模式字符串在目标字符串的第一次出现的位置比如abababc那么bab在其位置1处,bc在
- 近期Github开源了一款基于Python开发、名为Textshot的截图工具,刚开源不到半个月已经500+Star。这两天抽空看了一下Te
- 条件选取:torch.where(condition, x, y) → Tensor返回从 x 或 y 中选择元素的张量,取决于 condi
- 问题引入什么时候选择 T 作为参数类型,什么时候选择 *T 作为参数类型?[ ] T 是传递的指针还是值?选择 [ ] T 还是 [ ] *
- 本文实例讲述了python多线程使用方法。分享给大家供大家参考,具体如下:threading 模块支持守护线程, 其工作方式是:守护线程一般
- 承上启下上一篇文章我们介绍了 RNN 相关的基础知识,现在我们介绍文本生成的基本原理,主要是为了能够灵活运用 RNN 的相关知识,真实的文本
- 优先级两者放置相同条件,之所以可能会导致结果集不同,就是因为优先级。on的优先级是高于where的。首先明确两个概念:LEFT JOIN 关
- 世界疫情数据下载请点击》》:疫情数据下载注:此数据是2022年3月12号的结果,其中透明的地方代表确诊人数小于10万人,白色的地方代表无该国
- 1.python函数运行原理import inspectframe = Nonedef foo(): bar()def bar(
- 之前用python调用API存JSON的时候试用了很多方法,现在调用API直接获取参数的时候也是查了好多例子(毕竟我是一个初学者)。结果让我
- IF Exists(Select 1 From sysobjects Where Name='sp_search' And
- Python 直接连接mongodb数据库进行查询操作1、安装所需模块使用到的是pymongo模块,安装方法:pip instal
- 自Python3.1中,整数bit_length方法允许查询二进制的位数或长度。常规做法:>>> bin(256)'
- 本文实例讲述了Python Web框架之Django框架cookie和session用法。分享给大家供大家参考,具体如下:part 1 概念
- 本文实例讲述了Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息。分享给大家供大家参考,具体如下:import timefro
- pandas遍历每行并累加进行条件过滤 本次记录主要实现对每行进行排序,并保留前80%以前的偏好。思路:将每行的概率进行排序,然后
- 阅读本文大概需要3分钟关于函数和模块讲了这么久,我一直想用一个好玩有趣的小例子来总结一下,同时也作为实战练习一下。趣味编程其实是最好的学习途
- 新闻系统、blog系统等都可能用到将动态页面生成静态页面的技巧来提高页面的访问速度,从而减轻服务器的压力,本文为大家搜集整理了ASP编程中常
- 本文实例为大家分享了Python3多线程版TCP端口扫描器的具体代码,供大家参考,具体内容如下使用命令python BannerDemo.p
- 前言在学习操作系统的时候,我们应该都学习过临界区、互斥锁这些概念,用于在并发环境下保证状态的正确性。比如在秒杀时,100 个用户同时抢 10