Postman前置请求(pre-request)脚本登录获取token失败问题求助
Postman 前置请求脚本获取token问题修复方案
问题排查与修复点
- 核心语法错误:
pm.environment.set()方法需要传入「变量名」和「变量值」两个参数,你当前代码仅传入了变量名access_token,没有从登录响应中提取token值写入环境变量,自然无法获取到有效token。 - 缺少错误和响应状态判断:没有判断登录请求本身是否发送成功、接口是否返回成功响应,即使登录失败也会执行写入变量的逻辑,无法定位问题。
- 多余的Content-Type头配置:Postman发送formdata格式请求时会自动生成带boundary参数的Content-Type头,手动写死
multipart/form-data会导致boundary缺失,接口无法正确解析表单参数,导致登录请求本身失败。 - 未按接口实际返回结构取值:需要先确认你所用登录接口的响应结构,调整token的取值路径,常见结构为
response.json().data.access_token、response.json().access_token等,可根据实际情况修改。
修正后可用脚本
pm.sendRequest({ url: 'https://localhost/api/login', method: 'POST', // 删掉手动设置的Content-Type头,让Postman自动生成 body: { mode: 'formdata', formdata: [ {key: "email", value: "myemail@mydoman.com", disabled: false, description: {content:"", type:"text/plain"}}, {key: "password", value: "mypass", disabled: false, description: {content:"", type:"text/plain"}}, {key: "action", value: "login", disabled: false, description: {content:"", type:"text/plain"}} ] } }, function(err, response) { // 先判断请求是否报错 if (err) { console.error('登录请求发送失败:', err) return } // 再判断接口返回状态是否正常 if (response.code !== 200) { console.error('登录接口返回异常,状态码:', response.code, '响应内容:', response.json()) return } // 提取响应体内容,根据你的接口实际结构调整token取值路径即可 const resData = response.json() // 示例:假设接口返回结构为 {code:200, data: {access_token: "xxx"}} const token = resData.data.access_token // 写入环境变量,两个参数缺一不可 pm.environment.set("access_token", token); // 调试用,可在Postman控制台查看token是否正确提取 console.log('成功获取token:', token) });
调试建议
如果修改后还是无法获取,可打开Postman控制台(左下角「Console」按钮),查看请求的发送参数、响应内容,确认是请求参数错误、接口报错,还是token取值路径不对。
内容的提问来源于stack exchange,提问作者Heru Handoko
相关产品推荐
相关产品推荐

