必须在最后一个被依赖接口的 Tests 中手动拼接变量,如 pm.environment.set("auth_key", pm.environment.get("access_token") + "-" + pm.environment.get("user_id"));需用可选链或判空确保 JSON 取值安全;拼接结果优先存环境变量,并注意 URL/Headers/Body 中的正确引用格式。

怎么在 Tests 里提取并拼接多个接口的返回值
Postman 本身不支持“自动拼接”多个响应,必须靠脚本手动提取、组合、再存为变量。关键不是“怎么拼”,而是“在哪拼”——所有拼接逻辑必须写在前一个(或多个)接口的 Tests 标签页里,不能拖到下一个接口才处理。
常见错误是:第一个接口取了 access_token,第二个接口取了 user_id,但想在第三个接口的 URL 或 Body 里直接用 {{access_token}}-{{user_id}} ——这不行。{{}} 只做变量替换,不做字符串运算。
- 必须在第二个接口的
Tests里,读取前两个接口已存的变量,手动拼接后设为新变量 - 例如:
pm.environment.set("auth_key", pm.environment.get("access_token") + "-" + pm.environment.get("user_id")); - 注意顺序:只有当前接口执行完,它的
Tests才会运行;所以拼接动作要放在“最后一个被依赖接口”的Tests中 - 如果三个接口 A→B→C 都要参与拼接,就把拼接逻辑放在 B 的
Tests(因 C 还没跑,A 和 B 的变量此时都已可用)
JSON 响应嵌套深、字段多,怎么安全取值再拼接
用 JSON.parse(responseBody) 解析后,直接链式取值(如 data.data.items[0].id)极易报错:任意一层为 null 或 undefined 就中断。线上环境尤其容易因数据缺失导致后续接口全挂。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
- 别写
data.data.items[0].id,改用可选链操作符(Postman v9.15+ 支持):data?.data?.items?.[0]?.id - 更稳妥的做法是加判断:
const id = data && data.data && data.data.items && data.data.items[0] ? data.data.items[0].id : ""; - 拼接前务必校验字段存在性,比如生成签名参数时:
const signStr = [a, b, c].filter(v => v !== undefined && v !== null).join("|"); - 避免用
console.log调试后忘记删——大量日志会拖慢 Runner 批量执行速度
环境变量 vs 全局变量:拼接结果该存哪
拼接后的值(比如 token-userId-timestamp)必须明确存到 pm.environment.set() 还是 pm.globals.set(),否则下一个接口取不到。
- 优先用
pm.environment.set():环境变量作用域清晰,Runner 批量跑时可切换不同环境(test/staging/prod),变量互不干扰 - 全局变量(
pm.globals.set())只在账号级共享,多人协作时容易被误覆盖,且无法通过 Runner 的环境下拉框隔离 - 如果拼接结果要跨 Collection 复用(比如通用签名头),才考虑全局变量;否则一律环境变量
- 变量名避免含特殊字符或空格,
pm.environment.set("api_sign_v2", signStr)比pm.environment.set("API Sign V2", ...)更可靠
拼接后怎么用在下一个接口的 Header / URL / Body
变量拼接完成只是第一步,真正出问题常发生在“怎么用”上:URL 编码、Header 格式、JSON 字段转义这些细节一错,请求就 401 或 400。
- URL 参数中使用:
https://api.example.com/v1/order?sign={{api_sign_v2}}—— Postman 会自动做 URL 编码,无需额外处理 - Header 中使用:在
Headers标签页填Authorization→Bearer {{api_sign_v2}},注意空格不能少 - Raw JSON Body 中使用:必须写成合法 JSON 字符串,例如:
{"sign": "{{api_sign_v2}}"}—— 不要漏引号,也不要写成{"sign": {{api_sign_v2}}} - 如果拼接值含斜杠
/或等号=,又需用于 Basic Auth,得手动 Base64 编码:pm.environment.set("auth_header", btoa("user:" + pm.environment.get("api_sign_v2")))
拼接逻辑看似简单,但实际最常崩在第三步——你以为变量存进去了,其实因为环境没选对、脚本执行顺序错、或者 JSON 解析失败导致 set 被跳过,而控制台又没开 Console 查看输出。每次 Runner 前,先点开右上角眼睛图标确认变量值是否真实存在,比反复重跑更省时间。









