在postman设置请求里带动态token,看看这两种方法!

问题描述

在使用postman调试接口时,遇到一些需要在请求里加上token的接口,若token出现变化,需要手动修改接口的token值,带来重复的工作量,翻看postman使用手册后,我发现了两种方法可以解决这个问题。

01 设置全局/环境变量传递

postman中有个全局变量功能,类似js语法中的全局变量,一旦设置了,就可以在每个接口中获取到值,环境变量的功能也类似。

这里以环境变量为例,说说解决思路:

  • 请求一次登录接口,得到token;

  • 在postman中新增一个环境变量devToken,将上一步获取到的token赋值给devToken;

  • 其他请求接口根据需要在请求时带上devToken

  • 如果 devToken显示过期,再次请求一次登录接口,这时会将新的token赋值给devToken

具体实现如下:

在postman中新增一个环境变量devToken

图片

如图所示,打开最新版本的postman,然后点击Environments,就可以看到有Globals和下面的environment空白区域;

Globals区域一般用来存储不会随环境变化的参数而token一般会随环境变化,所以我们还是新建environment参数,点击 “+”:

图片

可以看到多了一个"new environment",这里我们将名字修改为dev;

然后添加一个任意命名的变量(也可以后续在JavaScript脚本里添加,这里为了演示方便,先行添加了),我这里命名为“devToken”:

图片

注意,不要添加initial value和current value,这些都会在我们请求登录接口后设置。

新增完成后,需要将当前环境设置一下:

图片

将获取到的token赋值给devToken

postman在每个接口的Tests区域里,都可以用JavaScript对请求结果做断言结果验证:

图片

如上图所示,右侧是一些常用的写法,这里不做展开阐述,我们用js脚本将验证结果写入到刚才设置的"devToken"里:

 

pm.test("Status code is 200", function () {


pm.response.to.have.status(200);


});


var data = JSON.parse(responseBody);


if (data.data.agpToken) {


tests["Body has agpToken"] = true;


pm.environment.set("devToken", data.data.agpToken);


}


else {


tests["Body has agpToken"] = false;


}

然后,我们send请求,再查看Test results区域,请求成功:

图片

我们再查看environment里的devToken:

图片

currentValue里有值,说明设置成功

其他请求接口根据需要在请求时带上devToken

如果你想要在其他接口用上devToken,应该写成{{devToken}},如下:

图片

我这里是加在请求头里,其他地方也类似,可以看到,response里code是200,请求成功了。

02 获取预请求得到的token

在每个请求中带上预请求,再获取预请求得到的token

这种解决方式,跟上一种的差别是,需要在每个请求中手动添加一个Pre-request script,会比较麻烦,不过可以保证获取到的token绝对不会过期,不需要多次请求登录接口,实现思路如下:

  • 通过预请求,类似于常见的先登录再访问的方式,预先请求登录接口,获得token;

  • 新建全局变量devToken,将第一步获得的token赋值给devToken,并在请求中带上devToken

具体实现方式如下:

新建全局变量devToken,同样,点击postman右侧菜单栏environment,然后点击“+”号,创建好后如下:

图片

新增完成后,需要将当前环境设置一下:

图片

预先请求登录接口,获得token,并将获得的token赋值给devToken

这一步通过postman的Pre-request script方式实现,具体代码如下:

 

let userInfo = {"username":"xxxx","password":"xxxx=="}


let requestData = {


    url: "http://localhost:8888/auth/login",


    method: "post",


    header: [


        "Content-type: application/json"


    ],


    body: {


        mode: "raw",


        raw: JSON.stringify(userInfo)


    }


}


pm.sendRequest(requestData, function(err, res){


    let rst = res.json();


    console.log(rst);


    var tokenId = rst.data.tokenId; // 根据自己的返回json结构来获取


    console.log(tokenId);


    pm.environment.set("tokenId", tokenId);


})

这个区域同样有很多的脚本语言可以参考,具体看右侧,此处按下不表,我们在该请求的pre-request script区域里加上以上脚本:

图片

并在请求头里带上devToken:

图片

然后,我们去发送请求:

图片

查询成功了,并且我们查看environment里的devToken,发现也被赋值了:

图片

需要注意的是,这种设置动态参数的方式,需要在每个request的pre-request script区域里都加上该脚本。

最后感谢每一个认真阅读我文章的人,下方这份完整的软件测试教程已经整理上传完成,需要的朋友们可以文末自行领取:【保证100%免费】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/906002.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

商家如何在高德地图上申请店铺入驻?

在当今数字化时代,互联网成为了消费者寻找商品和服务的主要渠道。高德地图作为国内领先的地图导航软件,不仅拥有庞大的用户基础,还为商家提供了优质的店铺展示平台。因此,对于实体店商家而言,入驻高德地图是提升店铺曝…

Java并发常见面试题总结(下)

Map(重要) HashMap 和 Hashtable 的区别 线程是否安全: HashMap 是非线程安全的,Hashtable 是线程安全的,因为 Hashtable 内部的方法基本都经过synchronized 修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMa…

数字化导师坚鹏:2025年银行开门红营销规划、方法及案例工作坊

2025年银行开门红营销规划、方法及案例工作坊 ——数字化赋能 新策略启航 开门红必胜 课程背景: 面对即将打响的开门红战役,很多银行存在以下问题: 不知道如何分析银行开门红面临形势及机遇? 不知道如何制定科学高效的开…

普通的Java程序员,需要深究源码吗?

作为Java开发者,面试肯定被问过多线程。对于它,大多数好兄弟面试前都是看看八股文背背面试题以为就OK了;殊不知现在的面试官都是针对一个点往深了问,你要是不懂其中原理,面试就挂了。可能你知道什么是进程什么是线程&a…

ctfshow——web(总结持续更新)

文章目录 1、基础知识部分2、php伪协议2.1 php://input协议2.2 data://text/plain协议 3、webshell连接工具3.1 蚁剑连接一句话木马 4、各个web中间件重要文件路径4.1 Nginx 5、sqlmap使用6、php特性6.1 md5加密漏洞 7、TOP 10漏洞7.1 SQL注入 1、基础知识部分 识别base64编码…

MYSQL---TEST5(Trigger触发器综合练习)

触发器Trigger 数据库mydb16_trigger创建 表的创建 goods create table goods( gid char(8) primary key, #商品号 name varchar(10), #商品名 price decimal(8,2), #价格 num int;) #数量orders create tabl…

layui 自定义验证单选框必填

对于输入框类型必填验证,只需要在 input 输入框加入 lay-verify "required" 即可。但对于单选按钮这种特殊的该怎么办呢?layui 为我们提供了自定义验证。 1. 在单选按钮上添加自定义验证的名称 2. 验证规则如下 // 单选框自定义验证form.ve…

OpenCV开发笔记(八十二):两图拼接使用渐进色蒙版场景过渡缝隙

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/143432922 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

「C/C++」C/C++标准库 之 #include<ctime> 时间日期库

✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

安达发|零部件APS车间排程系统销售预测的优点

2024制造业面临着前所未有的挑战与机遇。为了保持竞争力,企业必须确保其生产系统能够高效、灵活地运作。在这方面,采用高级计划与排程系统,特别是零部件APS车间排程系统的预测方法,已成为提升生产效率和响应能力的关键策略。这种系…

【笔试刷题】笔记4

目录 1、过河卒 dfs bfs 动态规划 2、扑克牌顺子 排序 模拟 找规律 3、最长回文子串 中心拓展法 1、过河卒 5493. 过河卒 - AcWing题库 这道题我们很容易就能够想到dfs或bfs&#xff0c;但这两种算法都是会超时的 dfs #include <iostream> #include <v…

大模型中的token是什么;常见大语言模型的 token 情况

目录 大模型中的token是什么 常见大语言模型的 token 情况 大模型中的token是什么 定义 在大模型中,token 是文本处理的基本单位。它可以是一个字、一个词,或者是其他被模型定义的语言单元。简单来说,模型在理解和生成文本时,不是以完整的句子或段落为单位进行一次性处理…

kafka里的consumer 是推还是拉?

大家好&#xff0c;我是锋哥。今天分享关于【kafka里的consumer 是推还是拉&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka里的consumer 是推还是拉&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中&#xff0c;消费者&…

少儿编程培训市场突破500亿元:教育新蓝海的崛起与未来展望

近年来&#xff0c;随着科技的迅速发展和家长对教育方式的重视&#xff0c;少儿编程市场成为一片新的蓝海。据最新市场调研报告显示&#xff0c;2024年中国少儿编程培训市场规模已突破500亿元&#xff0c;预计未来五年将持续增长。这一趋势反映了少儿编程教育的迅速崛起&#x…

【如何使用api接入星火大模型】(超详细,亲测有效!)

1 实现思路&#xff1a; 1.鉴权说明: 先在控制台创建应用&#xff0c;利用应用中提供的appid&#xff0c;APIKey&#xff0c; APISecret进行鉴权&#xff0c;生成最终请求的鉴权url。1.2 鉴权参数 host&#xff08;请求主机&#xff09;、date&#xff08;当前时间戳&#xff0…

国标GB28181软件EasyGBS国标GB28181网页直播平台在邮政快递场景中的应用

随着电子商务的迅猛发展&#xff0c;邮政快递行业迎来了前所未有的发展机遇&#xff0c;但同时也面临着诸多挑战。如何在保障货物安全、提高运输效率的同时&#xff0c;实现全面的监控和管理&#xff0c;成为邮政快递企业亟需解决的问题。国标GB28181网页直播平台EasyGBS作为一…

渗透测试练习题解析 7 (CTF web)

一、[红明谷CTF 2021]write_shell 1 考点&#xff1a; 1、PHP 短标签 2、 符号的使用 通过代码可知 check 是一个过滤函数&#xff0c;利用正则的方式过滤掉 空格、php、eval 等一些关键字或符号&#xff0c;$dir 是路径&#xff0c;这个值可以通过 actionpwd 获取到&#…

day-77 超级饮料的最大强化能量

思路 动态规划&#xff1a;因为每一步要么选A&#xff0c;要么选B&#xff0c;所以问题可以转换为求最后一步从A选或从B选中的较大值 解题过程 定义而二维数组dp,dp[i][0]表示最后一步从A取能获得的最大能量&#xff0c;dp[i][1]表示最后一步从B取能获得的最大能量状态转换方程…

(03)萨班斯-奥克斯利法案(SOX)--- 你和公司的违法成本有多大?

【前言】如果你的公司需要去美国上市&#xff1f;你知道如果违反了萨班斯-奥克斯利法案&#xff08;SOX&#xff09;&#xff0c;你和公司的风险和成本吗&#xff1f; 一、萨班斯-奥克斯利法案&#xff08;SOX&#xff09;合规性是指什么- 你必须知道&#xff0c;如果你的公司要…

C++ | Leetcode C++题解之第517题超级洗衣机

题目&#xff1a; 题解&#xff1a; class Solution { public:int findMinMoves(vector<int> &machines) {int tot accumulate(machines.begin(), machines.end(), 0);int n machines.size();if (tot % n) {return -1;}int avg tot / n;int ans 0, sum 0;for (…