首页 > 其他分享 >postman实现一次登录所有接口携带token

postman实现一次登录所有接口携带token

时间:2022-11-03 14:46:23浏览次数:41  
标签:请求 登录 接口 pm token 全局变量 postman

0. 问题背景

在后端开发过程中,我们需要做接口自测或者问题排查需要使用postman,但是大多数时候我们的系统都是有登录的,这个时候就需要请求携带token,如果每次请求的时候都去请求一次登录接口获取一个token然后再放入接口的header中,就显得很笨。下面就是解决这个问题的步骤。

1. 使用变量

postman是支持变量的,根据不同的作用域,分为全局变量、环境变量、集合变量等。这里我们解决登录token问题是要在所有的接口中起作用的,所以我们这里需要设置的是全局变量。

如上图,我再全局变量里设置了3个变量,可以看到前2个变量是有初始值和当前值的,但是第3个变量auth也就是token是只有当前值的。这是因为在我目前的项目中,前两个变量是固定的,所以我给了一个初始值,那当前值是根据初始值自动填充的,而token由于每次登录都会变化,所以我没有设置初始值,当前值是由脚本填充的。

2. 脚本填充全局变量中的token

每次登录之后会获取有效的token,那么我们在请求登录接口之后拿到token填充到全局变量中不就不用每次去修改token了嘛,所以如下:

如上图,在登录接口的Teststab中,我写了一个脚本(js),拿到返回值中的token,放到全局变量globals中。

var json = pm.response.json();
// 设置全局变量,环境变量是pm.environment
pm.globals.set("auth", json.access_token);

好了,现在实现了每次请求登录接口之后全局变量中的token都会更新,接下来就是如何使用全局变量了。

3. 使用全局变量

在postman中,最顶层的文件夹结构称之为collection

我们可以在collection中做很多操作,比如设置授权相关的东西,例如token。

我们可以看到,这里支持多种类型的授权,我这里选择的API Key就是一种简单k-v结构,然后选择将它添加到header里,那么如果说我每个请求要在请求头里加的不止一个token呢?比我就在globals里加了3个变量,那么可以看到Authorization旁边还有一个Pre-request Script,意思就是请求前的脚本,我们写个脚本将剩余的2个变量放入请求头里就行了。

// 添加新 header
var t_id = pm.globals.get('tenant');
pm.request.headers.add({
    key: 'Tenant-Id',
    value: t_id
});
var a = pm.globals.get('authorization');
pm.request.headers.add({
    key: 'Authorization',
    value: a
});

// 添加或修改已存在 header
// pm.request.headers.upsert({
//     key: 'Connection',
//     value: 'close'
// });

// 移除 header
// pm.request.headers.remove('User-Agent')

4. 验证

打开左下角的控制台可以看到每次接口请求的详细信息

我请求了一个接口,详细信息如下:

可以看到请求头里有我们想要加的3个变量,成功。

标签:请求,登录,接口,pm,token,全局变量,postman
From: https://www.cnblogs.com/datangguanjunhou/p/16853226.html

相关文章

  • [Java基础]-- 接口、抽象类
    一直都在使用接口,没怎么用过抽象类,今天面试遇到了面试官提问:抽象类和接口有什么区别啊?下面就关于这个问题好好研究一下,希望在以后的工作中能牢记。。以下是《疯狂java讲义》......
  • web服务器15 jsonp格式接口
    概念:浏览器端通过<script>标签的src属性,请求服务器上的数据,同时,服务器返回一个函数的调用。这种请求数据的方式叫做SONP。特点:①JSONP不属于真正的Ajax请求,因为它没有使用......
  • 函数式接口与lambda表达式
    函数式接口:只有一个方法的接口publicinterfaceCanAdd{intadd(inta,intb);}该接口作为其他方法的入参,实现函数传递publicclassDog{publicstatic......
  • web服务器13 接口
    主体constexpress=require('express')constapp=express()constrou=require('./api')//处理POST方法必写//配置解析application/json格式app.use(express.......
  • 如何利用chrome和firefox进行接口分析
    有时候,我们可能看到了比较好的资源网站,就想把它的接口抽象出来,然后存起来,收藏下来。供我们自己去调用。这往往离不开利用浏览器去分析接口。因为我们一开始无法判断页面上......
  • 转载文章 c++调用yolov4模型进行目标检测-使用yolov4官方接口
    前言yolo系列用c写的,在工程中的部署特别方便。4月份yolov4横空出世,之前试了试效果,精度确实有了很大的提升,AB大神nb。最近需要在C++项目中使用yolov4,尝试了opencv的调用(见......
  • 驱动开发:内核封装TDI网络通信接口
    在上一篇文章《驱动开发:内核封装WSK网络通信接口》中,LyShark已经带大家看过了如何通过WSK接口实现套接字通信,但WSK实现的通信是内核与内核模块之间的,而如果需要内核与应用......
  • 对外提供API,通过appId、appSecret、sign秘钥对接口做鉴权
    一、背景在接口开发过程中,我们通常不能暴露一个接口给第三方随便调用,要对第三方发来参数进行校验,看是不是具有访问权限。名词介绍:1、appId:应用id,用户自定义命名,如:*-ac......
  • 驱动开发:内核封装WSK网络通信接口
    本章LyShark将带大家学习如何在内核中使用标准的Socket套接字通信接口,我们都知道Windows应用层下可直接调用WinSocket来实现网络通信,但在内核模式下应用层API接口无法使用,......
  • 致远接口使用系列
    金蝶云星空与致远标准接口集成1.消息发送代码案例:post发送消息案例post地址:http://zxq.cqcy.com:8081/seeyon/rest/message/loginName?token=信息:{......