Postman实用技巧之-接口token失效后自动登录
背景:
在后端开发的过程中,使用Postman进行接口自测是一个不可或缺的环节。常常会遇到这样的情况:每次测试接口都需要手动调用登录接口获取jwt(JSON Web Token)或者去Redis中获取token,这种方法效率显然太低,对于开发者来说是一个很大的困扰。
思路
- 通过接口返回值或者HTTP状态码(一般token失效时状态码为401)判断是否需要重新登录。然后通过Tests脚本完成登录,并将新的jwt存入变量中,以便下次请求使用。
- 创建一个echo接口,在pre-request-script中实现预请求,检查jwt是否有效。如果失效,则自动登录并重置jwt。
下面我们来详细介绍如何实现这个思路。
实现
Tests脚本检查:
- 必需变量:id账号;pwd密码;token登录凭证
- 登录接口参数可以根据实际情况而定
var data=JSON.parse(responseBody);
if(data == null || "401" != data.status){
return;
}
pm.sendRequest({
url: pm.environment.get("request_prefix") + "app/login",
method: 'POST',
header: {
'Content-Type': 'application/json'
},
body: {
mode: 'raw',
raw: JSON.stringify({
password: pm.environment.get("pwd"),
username: pm.environment.get("id")
})
}
}, function (err, res) {
if (err) {
console.error(err);
} else {
var result = res.json();
pm.environment.set("token", result.data.token);
}
});
这段代码判断当前接口是否鉴权过,如果返回401鉴权失效则重新登录,将token重置到变量中,下次请求即可生效。
预脚本与echo接口检查
//
pm.sendRequest({
url: pm.environment.get("request_prefix") + "host/echo",
method: 'GET'
}, function (err, res) {
if (err) {
console.error(err);
} else {
var result = res.json();
if(data == null || "401" != data.status){
return;
}
}
});
// 登录
pm.sendRequest({
url: pm.environment.get("request_prefix") + "app/login",
method: 'POST',
header: {
'Content-Type': 'application/json'
},
body: {
mode: 'raw',
raw: JSON.stringify({
password: pm.environment.get("pwd"),
username: pm.environment.get("id")
})
}
}, function (err, res) {
if (err) {
console.error(err);
} else {
var result = res.json();
pm.environment.set("token", result.data.token);
}
});
这段代码会首先检查环境变量中的token是否存在,如果不存在,则发送一个POST请求到登录接口,并将返回的token存储到环境变量中。
结语
通过上述两种方法,我们可以实现Postman在接口token失效后自动登录的功能,大大提高了我们的开发效率。当然,这只是一个简单的例子,实际应用中可能会更加复杂。但是基本的思路是一样的,希望这篇文章能对你有所帮助。