使用 Postman 的预请求脚本实现自动刷新接口凭证
Posted 程序员小捣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 Postman 的预请求脚本实现自动刷新接口凭证相关的知识,希望对你有一定的参考价值。
Postman 是一个可以帮你甚至你的团队快速开发 API 的工具。
近期,在 Postman 上发现一个非常不错的功能 - 预请求脚本(Pre-request Script),即在一个 Request 请求之前可以写 javascript 脚本做自动化的任务。
本文将主要介绍如何使用预请求脚本实现自动刷新接口凭证。
关于 Postman
Postman 是一个为接口开发的可以多人协作的平台。Postman 的各种功能可以很好地简化构建一个接口的步骤和提高团队协作的效率,从而以更快的速度去创造更好的接口!
预请求脚本
在预请求脚本里,由 pm 这个对象提供大部分重要的功能,包括 pm.environment、pm.sendRequest 等,可以用于测试我们的请求内容和响应结果。
在 Postman 中,你可以创建一个 Environment 的集合,使用 Environment 可以统一设置一些变量,比如 baseUrl,然后在 Request 的地址栏像下面这样使用:
{{baseUrl}}/user/get 这时,在预请求脚本里,我们可以通过下面的方式获取和设置 Environment 的内容:
// 获取 token 环境变量 const token = pm.environment.has(‘token’) // 设置
token 环境变量 pm.environment.set(‘token’, ‘xxx’)
自动刷新接口凭证
现在有一个场景:某个接口服务要求请求是需要带上凭证 token,而且这个 token 的有效期只有两小时,如果没有预请求脚本,我们需要每隔两小时重新获取一次 token,这个动作是手动,所以显得十分繁琐。
但是有了预请求脚本,我们可以在接口集合 Collections 下设置预请求脚本,让接口集合下的所有请求 Request 执行前都会先执行预请求脚本,这个预请求脚本会自动获取接口凭证 token,并设置到环境变量中,此时,接口请求就是正确的了!
下面是我写的预请求脚本:
const d = new Date(); const t = d.getTime(); const
lastRefreshTokenTime =
parseInt(pm.environment.get(“lastRefreshTokenTime”)); if
(t-lastRefreshTokenTime < 3600000) {
return } const url = pm.environment.replaceIn("{{baseURL}}/api/refreshToken") const req =
{
url: url,
method: ‘POST’,
header: {
‘Content-Type’: ‘application/json’
},
body: {
mode: ‘raw’,
raw: JSON.stringify({
appId: pm.environment.get(‘AppID’),
appSecret: pm.environment.get(‘AppSecret’)
})
} }; pm.sendRequest(req, function (err, response) {
if (response.code === 200) {
const data = response.json()
pm.environment.set(‘token’, data.token)
pm.environment.set(‘lastRefreshTokenTime’, t)
return
}
console.log(Error: ${response}
) });
上面的预请求脚本除了会自动刷新 token 外,还会通过环境变量 lastRefreshTokenTime 判断上一次获取 token 的时间,如果时间间隔超过一个小时,才会刷新 token 并设置 lastRefreshTokenTime 为当前时间戳,否则说明 token 仍有效,不会去刷新 token。
最后:【可能给予你一定的帮助】
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
关注我的微信公众号【软件测试小dao】免费获取~
我的学习交流群:644956177 群里有技术大牛一起交流分享~
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
以上是关于使用 Postman 的预请求脚本实现自动刷新接口凭证的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Postman 中的预请求脚本从另一个请求运行一个请求