Postman实用技巧之-接口token失效后自动登录

Postman实用技巧之-接口token失效后自动登录

背景:

在后端开发的过程中,使用Postman进行接口自测是一个不可或缺的环节。常常会遇到这样的情况:每次测试接口都需要手动调用登录接口获取jwt(JSON Web Token)或者去Redis中获取token,这种方法效率显然太低,对于开发者来说是一个很大的困扰。

思路

  1. 通过接口返回值或者HTTP状态码(一般token失效时状态码为401)判断是否需要重新登录。然后通过Tests脚本完成登录,并将新的jwt存入变量中,以便下次请求使用。
  2. 创建一个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失效后自动登录的功能,大大提高了我们的开发效率。当然,这只是一个简单的例子,实际应用中可能会更加复杂。但是基本的思路是一样的,希望这篇文章能对你有所帮助。

Guess you like

Origin blog.csdn.net/Arhhhhhhh/article/details/132629228