网站首页 > 技术文章 正文
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专用函数和更多用法参考:https://learning.postman.com/docs/writing-scripts/test-scripts/
测试
发送请求,在Postman控件台有输出日志
此时变量 captchaKey 和 header-authorization 的值是接口返回的值。
再新建一个接口,在header中传入登录后返回的授权信息。
不同系统的接口设计不一样。我的项目是在header中加入 Authorization 字段传递授权信息。
执行接口请求,返回成功。
举一反三
很多APP的接口会对数据加密。新建一个加密服务,用脚本使Postman在发送数据前先请求加密服务获取密文,再发送。然后处理返回结果,请求加密服务解密,就能实现接口测试了。
除非注明,否则均为”攻城狮·正“原创文章,请注明出处。
本文链接:https://engr-z.com/539.html
猜你喜欢
- 2024-11-26 学会IDEA REST Client后,postman就可以丢掉了...
- 2024-11-26 IntelliJ IDEA 自带的高能神器
- 2024-11-26 java 程序员如何更高效地测试接口?
- 2024-11-26 JWT 简介
- 2024-11-26 就在刚刚,马斯克 xAI 正式公测 xAI API,每天赠送 25 美元免费积分!
- 2024-11-26 全面解读跨域身份验证方案——JWT
- 2024-11-26 Rest API的认证模式
- 2024-11-26 istio 1.10学习笔记13: 使用认证策略设置双向TLS和终端用户认证
- 2024-11-26 写给运维的Nginx秘籍
- 2024-11-26 API网关的权限验证实践
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-