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

本文介绍了在Postman中如何设置动态token以避免手动修改,包括设置全局/环境变量传递token和通过预请求获取token的方法。详细步骤包括创建环境变量、设置预请求脚本,以及如何在请求中使用这些变量。

 

(粉丝福利)整理了一些软件测试方面的资料、面试资料(接口自动化、web自动化、app自动化、性能安全、测试开发等),有需要的小伙伴可以文末关注我的微信公众号,无套路自行领取~

问题描述

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

绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

<think> 我们正在处理用户的问题:"请问Postman设置Authorization请求token方法" 根据系统级指令,我们需要参考用户提供的引用内容(虽然引用内容不是用户真正的需求,但用户要求参考站内引用,并且引用了两段内容) 引用[1]描述了在Postman的图形界面中设置Bearer Token的步骤。 引用[2]则展示了在Postman的脚本中设置全局token的代码(可能是通过脚本设置环境变量或全局变量)。 因此,我们可以将设置token方法分为两种: 1. 在图形界面中直接设置(适合单次请求或手动设置2. 通过脚本设置全局变量(适合自动化测试,例如在获取token请求设置) 根据用户的问题,他们想查找设置Authorization请求token方法,所以我们应该涵盖这两种方法。 另外,注意用户要求回答结构清晰,逐步解决问题。 同时,我们需要在回答中自然地添加引用标识。 最后,根据指令,我们需要生成相关问题。 </think>在Postman设置Authorization请求Token主要有以下两种方法,操作简单直接: ### 1. 图形界面设置(推荐) 1. **新建或打开请求**:创建新请求或打开已有请求 2. **切换到Authorization选项卡**:在请求编辑区域顶部选择该标签页[^1] 3. **选择认证类型**:在"Type"下拉菜单中选"Bearer Token"[^1] 4. **输入Token值**:在Token输入框粘贴您的访问令牌 5. **发送请求**:保存后发送,Postman自动添加`Authorization: Bearer <token>`请求头[^1] ### 2. 脚本自动设置(适合自动化测试) ```javascript // 在Tests脚本中设置全局变量 postman.setGlobalVariable( "Authorization", "Bearer " + JSON.parse(responseBody).access_token ); ``` 此方法需配合前置请求获取token,后续请求通过`{{Authorization}}`引用变量[^2] ### 验证是否生效 发送请求后,在"Headers"选项卡检查是否存在: ``` Authorization: Bearer your_token_here ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值