postman传递动态参数的最佳实践

  • 问题描述
  • 一、设置全局/环境变量传递
    • 在postman中新增一个环境变量devToken
    • 将获取到的token赋值给devToken
    • 其他请求接口根据需要在请求时带上devToken
  • 二、在每个请求中带上预请求,再获取预请求得到的token
    • 新建全局变量devToken
    • 预先请求登录接口,获得token,并将获得的token赋值给devToken

问题描述

在使用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区域里都加上该脚本。

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

  1. 属性和方法的区别是什么_微信被拉黑和被删除,有什么区别?两种方法教你辨别...

    微信作为目前使用最广泛的一种社交聊天工具,几乎成为了智能手机的必备软件.它除了为我们的日常生活带来诸多便利之外,相信许多都是对它又爱又恨.其中最让人反感的一点就是,对方明明已经早已将自己拉黑或者删除了 ...

  2. 两种方法教你彻底卸载Ubuntu双系统,无启动项残留

    两种方法教你彻底卸载ubuntu双系统 方法一: 1.在windows下下载磁盘工具DiskGenius *下载地址:*http://www.diskgenius.cn/download.php 下载 ...

  3. 七种方法教你如何获取以太坊测试网Token

    七种方法教你如何获取以太坊测试网Token 在使用以太坊测试网时,我们通常都需要获取一些测试币,这里就以MetaMask为例介绍一下怎么获取以太坊测试币. 首先介绍一种最权威且一直可以用的方法,以Ro ...

  4. 怎样改证件照的背景颜色?两种方法教你换背景色

    怎么改证件照的背景色呢?证件照大家在日常中经常会使用到,这也是我们每个人必备的一种证件.但是在使用的过程中,相信很多小伙伴遇到过自己的证件照背景色与要求的颜色不符的情况,因为通常情况下不会有这种情况, ...

  5. 两种方法教你修改MAC地址 !

    MAC(Media Access Control,介质访问控制)地址,或称为MAC位址.硬件地址,它用来定义网络设备的位置.当别人的防火墙获取到你的IP地址后,就可以通过"Nbtstat - ...

  6. 【转】两种方法教你在Ubuntu下轻松关闭触摸板(TinkPad)

    Ubuntu是一个以桌面应用为主的Linux操作系统,所以在使用时我经常的触碰到触摸板,这样会造成我们一些的麻烦,所以要如何的关闭触摸板呢?我们一起来看看吧! Ubuntu下如何关闭触摸板(TinkP ...

  7. PPT怎么转化成PDF?这两种方法教你快速解决!

    今天我们将向您介绍如何将 PowerPoint 演示文稿 (PPT) 转换为 PDF 文件. 我们将通过两种方法来做到这一点: 将 PowerPoint 演示文稿另存为 PDF 文件. 使用 奇客免费 ...

  8. 刷magisk模块后不能开机_刷Magisk模块开机卡Logo了怎么办?两种方法教你轻松解决...

    虽然,Magisk由于工作原理的不同,其模块对系统的兼容性相比较于此前的Xposed框架模块要好得多,但是依旧有可能出现刷了模块之后,卡Logo,无法开机的情况.今天,小编就提供两种方式解决刷Magi ...

  9. 小米2s自带rec刷root_刷Magisk模块开机卡Logo了怎么办?两种方法教你轻松解决

    虽然,Magisk由于工作原理的不同,其模块对系统的兼容性相比较于此前的Xposed框架模块要好得多,但是依旧有可能出现刷了模块之后,卡Logo,无法开机的情况.今天,小编就提供两种方式解决刷Magi ...

最新文章

  1. 1012. 数字分类 java_PAT-B-1012. 数字分类(Java)
  2. qt 分辨率问题 安卓_Windows下基于Qt开发Android应用
  3. DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解
  4. java监听器模式使用场景_常用监听器及其应用场景
  5. javafx 自定义控件_JavaFX自定义控件– Nest Thermostat第3部分
  6. MATLAB实现BP神经网络预测汽油辛烷值
  7. iOS7应用开发2、关于新版的IDE:XCode 5
  8. nginx 超时时间_Linux从入门到放弃 Nginx
  9. shell取mysql数据_通过shell读取mysql数据——20120417
  10. 小股神助A股股民畅享经济发展红利
  11. C语言小游戏(flappy bird),附带源码及素材
  12. YAML语法详细介绍
  13. 浅析帧、帧数、帧率、FPS区别
  14. 立体图形3D动画和绘制
  15. 一款Python实用神器,5 行 Python 代码 实现一键批量扣图
  16. 英式音标26字母(U-Z)
  17. 买服务器不做网站需要备案吗,买服务器需要备案吗
  18. 机器学习(一):什么是机器学习
  19. 【LB】稀疏矩阵的快速转置原理及其算法
  20. Linux下2D、3D的测试软件glxgears

热门文章

  1. 英国猫咪暖心故事:让我陪伴你一生
  2. canvas+howler.js
  3. 微信小程序 wux-filterbar动态更新分类
  4. java就业率高吗_java好就业吗
  5. ISCC认证的申请条件是什么?
  6. 丘成桐:人类生活在十维宇宙里
  7. 【linux驱动之字符设备驱动基础】
  8. Vmware上安装Vxworks 5.5
  9. 解决SecureFX无法连接linux服务器
  10. Python获取用电情况数据-AHPU校园网