Postman中实现token传递需完成提取、存储、引用三步闭环:在前一接口Tests中用JSON.parse()解析响应并以pm.environment.set("token", value)存入环境变量,下一接口Header的Value栏严格填写{{token}}(大小写敏感),且确保环境一致。

Postman 里把上一个接口返回的 token 放进下一个接口的请求头(Header),本质是「提取 + 存储 + 引用」三步闭环。只要环境变量或全局变量设置对了,{{token}} 就能直接填在 Header 的 Value 栏里,无需写 JS 取值——很多人卡在第二步没配环境,或者第三步填错格式。
Tests 脚本里正确提取并存为环境变量
必须在前一个接口的 Tests 标签页里写 JavaScript 提取响应体中的字段,并调用 pm.environment.set() 或 pm.globals.set() 存起来。常见错误包括:
- 没解析
responseBody就直接点取属性,比如responseBody.token—— 这会报Cannot read property 'token' of undefined - 返回结构嵌套深,但脚本里只写了
data.token,实际是data.data.token或data.result.access_token - 用了旧版 API
postman.setEnvironmentVariable("token", ...),新版本已弃用,应统一用pm.environment.set("token", ...)
正确示例(假设响应是 {"code":0,"data":{"token":"abc123"}}):
const data = JSON.parse(responseBody);
pm.environment.set("token", data.data.token);
Header 中引用变量必须用双大括号语法
在下一个接口的 Headers 标签页中,Key 填 Authorization 或 X-Auth-Token 等实际需要的字段名,Value 必须写成 {{token}},不能写成 $token、${token}、token 或 "{{token}}"(带引号)。Postman 只识别 {{xxx}} 这种格式。
还要确认两点:
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
- 当前请求使用的环境(右上角下拉框)和你存变量时用的环境一致;如果用的是
pm.globals.set(),那任何环境都能用{{token}} - 变量名大小写敏感:
pm.environment.set("Token", ...)后,Header 里必须写{{Token}},不是{{token}}
为什么 Header 里 {{token}} 没生效?先查这三处
变量看似设了、也引用了,但发出去的请求 Header 里还是空的,大概率是以下某个环节断了:
- 前一个接口根本没点 Send —— Tests 脚本只在发送后执行,不发送就不会运行
pm.environment.set() - 环境变量面板(
Manage Environments)里看不到刚设的token值,说明脚本执行出错或没命中路径;可加console.log(data)辅助调试 - Header 的
Value栏焦点离开后,Postman 会自动渲染变量;但如果输入时多打了空格(如{{token}}),部分老版本可能无法识别
快速验证方式:在任意请求的 Pre-request Script 里写 console.log(pm.environment.get("token")),再点 Send,看 Console 输出是否为预期值。
Bearer Token 类型 Header 的典型写法
很多 API 要求 Authorization: Bearer abc123 这种格式,不能只填 token 字符串。这时 Header 的 Value 应写成:
Bearer {{token}}
注意 Bearer 和 {{token}} 之间有一个空格。如果 token 是 base64 编码过的凭证,且需拼接 Basic,写法同理:Basic {{credentials}}。
复杂点在于 token 有时效性,而 Postman 不会自动刷新环境变量——每次跑批量测试前,得确保登录接口先执行一次;否则旧 token 过期导致后续全失败,这个依赖顺序容易被忽略。

















