网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
切换环境变量
获取上一个接口的响应值并进行更新
以上都是可以在 pre-request script 功能做的。
postman 执行顺序
首先来讲一下,postman 的执行顺序,其实这个只看一张图就够了。
从 postman 的介绍中,可以知道 postman 执行的顺序会先去到 pre-request script 检查是否有需要执行的前置条件。
pre-request script 场景实践
场景一 : 登录验证加密
现在有一个我们项目中,登录接口是通过 user token 登录的。前端页面需要填写 username 以及 password,再通过 js 进行 MD5 加密处理,最后请求接口验证返回登录状态。
api : /api/login
method : post
headers :
token: user_token
Content-Type: application/json
生成 user_token 方式: username&psaaword 大写
上面就是接口文档说明的,要通过 md5 方式对 username&password 进行加密。那么在 pre-request script 里面,我们可以这样做。
点开环境变量会看到已经生成了 user_token 对应的加密 token 了。
场景二 : 切换环境变量
可能对应这个场景比较少人会用上,但是不得不说,这个场景确实有用。
平时我们切换测试或者产线环境的时候,都是命名不同的环境名称,然后将对应环境的 HOST 填写到环境变量里面去。经常我们会命名这样的:TEST_HOST,PROD_HOST 这样的方式,当我们切换环境的时候,在 request 中改 HOST 即可。
如果我们可以在请求前,可以自动切换不同的 HOST 就更好。
我们可以这样做,首先在 collection 中定义不同环境的 HOST。
其次,我们在 pre-request script 中定义我们的函数
let varbs = new Set()
pm.collectionVariables.values.each(v => {
varbs.add(v.key.toUpperCase())
})
pm.collectionVariables.values.each(v => {
let envVarbKey = [pm.environment.name, v.key].join("_").toUpperCase()
if (varbs.has(envVarbKey)) {
pm.collectionVariables.set(v.key, pm.collectionVariables.get(envVarbKey))
}
});
这里面的意思,就是根据环境名去 variables 中寻找我们对应的 HOST
最终,我们只需要在不同环境中维护 api-key 等参数即可。
场景三 : 获取另外接口的响应值并进行更新
在请求的时候,需要获取到另外一个接口的响应值,并将响应值作为当前 request 的参数。
在这里,pre-request script 不仅仅能写函数,还能写请求函数。
// Refresh the OAuth token if necessary
var tokenDate = new Date(2022,9,3);
var tokenTimestamp = pm.environment.get("OAuth_Timestamp");
if(tokenTimestamp){
tokenDate = Date.parse(tokenTimestamp);
}
var expiresInTime = pm.environment.get("ExpiresInTime");
if(!expiresInTime){
expiresInTime = 300000; // Set default expiration time to 5 minutes
}
if((new Date() - tokenDate) >= expiresInTime)
{
pm.sendRequest({
url: pm.variables.get("Auth_Url"),
method: 'POST',
header: {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': pm.variables.get("Basic_Auth")
}
}, function (err, res) {
try{
pm.environment.set("OAuth_Token", res.json().access_token);
pm.environment.set("OAuth_Timestamp", new Date());
// Set the ExpiresInTime variable to the time given in the response if it exists
if(res.json().expires_in){
expiresInTime = res.json().expires_in * 1000;
}
pm.environment.set("ExpiresInTime", expiresInTime);
}
catch(e) {
console.log('Unable to load access token from response);
}
});
}
这里面的函数,主要是通过检索 token 是否过期,重新生成 token 的请求方法。比较简单理解。
1、检查 token 是否过期
2、如果过期,就生成新的 token
3、将新的 token 设置到环境变量,然后记录设置的时间
总结
以上就是这篇文章主要讲的内容,主要是讲解 pre-request script 在工作中的应用场景,希望可以帮助到大家。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!