Postman请求返回401时自动调用Login并重试的可行性问询
实现Postman请求401自动重登重试的方案
完全可行,而且能避免你说的冗余问题,不用给每个请求单独加前置脚本,只需要在集合层面配置一次即可,具体操作如下:
1. 准备Login请求
确保你的Login请求已经命名为Login(方便后续脚本引用),请求配置正确:
- 请求方法:
POST - 请求地址:
{{API_URL}}auth/token/ - 请求体(raw/JSON):
{ "email": "{{email}}", "password": "{{password}}" }
确认该请求能正常返回包含token的响应(比如响应体里有access_token这类字段)。
2. 添加集合级测试脚本
打开你的目标集合,切换到Tests标签页,添加以下脚本:
// 跳过Login请求本身,防止循环调用 if (pm.request.name !== 'Login' && pm.response.code === 401) { // 调用Login请求获取新token pm.sendRequest({ method: 'POST', url: pm.variables.get('API_URL') + 'auth/token/', header: { 'Content-Type': 'application/json' }, body: { mode: 'raw', raw: JSON.stringify({ email: pm.variables.get('email'), password: pm.variables.get('password') }) } }, function (err, res) { if (!err) { // 这里根据实际Login响应的token字段名修改,比如你的响应是token就改成res.json().token const newToken = res.json().access_token; // 更新环境变量里的认证token(假设你用的变量名叫authToken) pm.environment.set('authToken', newToken); // 重试当前请求 pm.execution.retry(); } else { console.error('登录请求失败:', err); } }); }
3. 统一配置请求认证
确保集合内需要认证的请求,都使用环境变量里的authToken作为凭证(比如Bearer Token模式,值填{{authToken}})。
关键说明
- 脚本只会在请求返回401时触发Login请求,不会每次请求都执行,解决了冗余问题。
- 集合级脚本会自动应用到集合内所有请求,无需逐个配置。
- 注意根据实际情况修改脚本里的token字段名、环境变量名,确保和你的业务逻辑匹配。
内容的提问来源于stack exchange,提问作者Milano
相关产品推荐
相关产品推荐

