两种方法教你在postman设置请求里带动态token

2023-10-26

问题描述

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

一、设置全局/环境变量传递

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,请求成功了。

二、在每个请求中带上预请求,再获取预请求得到的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区域里都加上该脚本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两种方法教你在postman设置请求里带动态token 的相关文章

随机推荐

  • 深度学习基本环境搭建 ubuntu20.04LTS系统安装 nvidia显卡驱动 anaconda安装 cuda指定版本安装 cuda版本升级

    背景 电脑原来是windows 现在装为纯Ubuntu 安装显卡驱动 安装anaconda 安装pytorch 电脑型号 dell的一个工作站 显卡rtx3090 镜像下载 Enterprise Open Source and Linux
  • ElementUI+Vue 解决在使用el-dialog时,点击el-dialog外的其他区域会导致该对话框关闭。

    转载自 https blog csdn net weixin 42230550 article details 95201746 需求描述 今天 在做Element Vue项目时遇到一个需求 甲方要求在Dialog打开状态下 点击该Dial
  • YOLOv4网络详解

    0前言 在YOLOv4论文中 作者其实就是把当年所有的常用技术罗列了一遍 然后做了一堆消融实验 1 YOLOV4的网络改进部分 1 主干特征提取网络 DarkNet53 gt CSPDarkNet53 使用Mish激活函数 2 特征金字塔
  • java---为什么byte+byte=int

    byte也是基本数据类型范围是 128 127 但是做加法时会有这么一个问题 我们清晰的看到 byte byte byte报错了 这是为什么呢 编译器说他需要int类型 这是因为在java中 因为byte数量太小了 从硬件的角度讲 为较小的
  • uni-app使用时遇到的坑

    一 uni app开发规范 1 微信小程序request请求需要https 小程序端 在本地运行时 可以使用http 但是预览或者上传时 使用http无法请求 APP端 一般APP可以使用http访问 高版本的APP可能需要用https访问
  • 浪涌测试如何进行试验配置

    此文只是针对浪涌测试中的试验配置部分内容进行总结 如下表所示 试验对象 开路电压波形 注1 短路电流波形 输出阻抗 电源 线 线 1 2 50us 8 20us 2 18uF 线 地 2 10 9uF 非屏蔽不对称 注2 非差分通讯线 线
  • 和为s的数字

    题目描述 输入一个数组和一个数字s 在数组中查找两个数 使得它们的和正好是s 如果有多对数字的和等于s 输出任意一对即可 你可以认为每组输入中都至少含有一组满足条件的输出 样例 输入 1 2 3 4 sum 7 输出 3 4 分析 首先想到
  • Ubuntu系统安装分区

    一 U盘启动盘制作 1 U盘一个 U盘空间大小足够大 8G够用了 U盘里面的内容提前转存备份 2 UltraISO软碟通启动制作工具或Universal USB Installer 3 Ubuntu官网找到自己需要Ubuntu版本下载ISO
  • blfs:为lfs虚拟机增加桌面03

    编译安装Qt5 15 我比较好奇 当前只安装了twm X org提供的简单的窗口管理器 这个时候Qt的界面是怎么样的一个呈现 Qt5 15安装 required和recommanded必装 optional中涉及到runtime的建议安装
  • 树莓派4B Ubuntu 远程桌面 步骤

    文章目录 准备 更换国内源 更新软件列表和软件 安装SSH 安装ubuntu desktop xrdp方法 VNC方法 问题故障解决 花屏 蓝屏 黑屏 无法修正错误 因为您要求某些软件包保持现状 就是它们破坏了软件包间的依赖关系 参考 准备
  • 时间序列-预测-经典算法:Arimax【带额外输入的自回归综合移动平均】【多元变量预测】【ARIMA模型的一个扩展版本】

    标准的ARIMA 移动平均自回归模型 模型允许只根据预测变量的过去值进行预测 该模型假定一个变量的未来的值线性地取决于其过去的值 以及过去 随机 影响的值 ARIMAX模型是ARIMA模型的一个扩展版本 它还包括其他独立 预测 变量 该模型
  • C开源项目-TinyHttp解读(上)

    项目简介 此项目可以自行在GitHub上进行下载 作者的ReadMe文档也写得是比较详细的 这里用到了较多的Unix编程 不会的可以一点一点去查 实名感谢我们家杰佬发给我的APUE 可以当字典查 项目内容 其实就是实现了一个轻量级服务器的功
  • ubuntu 14.04安装opencv2.4.13

    1 下载opencv2 4 13的 zip包 http opencv org downloads html 2 解压到任意目录 unzip opencv 2 4 13 zip 3 在解压后的目录里创建一个release cd opencv
  • 虚拟机 arm服务器,一种面向ARM多核处理器服务器平台的系统虚拟机

    主权项 1 一种面向ARM多核处理器服务器平台的系统虚拟机 基于KVM实现 采用宿主模型架构 其特征在于 该虚拟机主要包括 1 物理硬件 物理硬件进一步包括物理CPU 物理内存 物理外设 物理硬件是整个系统虚拟机的硬件基础设施 2 宿主OS
  • css样式表的作用和意义,什么是CSS?

    CSS是大家很熟悉的一个词了 但是如果问你 什么是CSS 你能回答得出吗 到底什么是CSS CSS有什么作用 CSS长什么样子 今天我们就给大家一一解答 CSS全称为Cascading Style Sheets 层叠样式表 中文翻译为 层叠
  • SUSE linux 使用LVM安装系统和管理

    引出 在我们安装好linux系统后会发现在需要修改磁盘分区的时候会比较困难 系统安装的 目录的文件系统要更改基本不太可能 其他目录如 home目录也比较困难 但是系统安装时要是采用的LVM管理的方式安装的话就会截然不通 一 首先普及下LVM
  • 嵌入式python智能实训总结_嵌入式智能家居心得体会 智能家居实训报告2000字

    家里装全套智能家居是一种什么体验 男士体验 5 半年后 我们发现有一篇回到第一篇文章 女性体验 第一篇 嗯 半夜哺乳 不用涂抹 第二篇 睡觉时忘记关灯 不要踢老公 第三 可以随时检查宝宝的状态 而且你可以监控老公是否不在家 第四 出行时 不
  • 软件测试之白盒测试

    白盒测试 一 白盒测试定义 白盒测试 又称结构测试 是在已知程序的内部工作过程的情况下 用来测试程序的内部结构 并判定其结果是否与预期的结果一致 一般说来 白盒测试相对简单 因为白盒测试是在已知程序的内部工作流程的情况下进行的 而且白盒测试
  • GIT常用命令以及使用详解图示

    1配置个人信息 方便提交代码管理 获取Git配置信息 执行以下命令 git config list 如果你还没有设置名字 user name 和 user email的话 可以用以下指令设置 git config global user n
  • 两种方法教你在postman设置请求里带动态token

    postman传递动态参数的最佳实践 问题描述 一 设置全局 环境变量传递 在postman中新增一个环境变量devToken 将获取到的token赋值给devToken 其他请求接口根据需要在请求时带上devToken 二 在每个请求中带