Postman 提取响应字段核心是 pm.response.json() 配合 JS 路径访问,需先确认响应为 JSON(检查 Content-Type 或用 try/catch),再按实际结构写路径,避免 undefined 错误;非 JSON 响应改用 pm.response.text() 配合正则或字符串解析,并及时存入环境变量供复用。

Postman 里提取响应字段,核心靠 pm.response.json() + JavaScript 路径访问,不是靠可视化勾选或正则硬匹配——写错路径或忽略响应类型,90% 的提取失败都发生在这两步。
响应是 JSON 吗?先确认再提取
很多接口返回的是纯文本、HTML 或空响应体,pm.response.json() 会直接报错 SyntaxError: Unexpected token。必须加 try/catch 或先检查 Content-Type 头。
- 在 Tests 标签页里,先加这行判断:
if (pm.response.headers.get("Content-Type")?.includes("application/json")) { ... } - 或者更稳妥:用
pm.response.text()拿原始字符串,再手动JSON.parse()并捕获异常 - 常见陷阱:后端返回
{"data":null}或{"code":200,"msg":"ok"},但你写了pm.response.json().user.id—— 字段根本不存在,结果是undefined,后续引用会报Cannot read property 'id' of undefined
pm.response.json() 提取嵌套字段的写法
JSON 响应结构决定路径写法,不能凭感觉补点或括号。比如响应是 {"result":{"items":[{"name":"a"},{"name":"b"}]}},要取第一个 name:
- ✅ 正确:
pm.response.json().result.items[0].name - ❌ 错误:
pm.response.json().result[0].items.name(result 不是数组) - ❌ 错误:
pm.response.json().result.items.0.name(JS 中数字索引不能用点号) - 如果字段名含特殊字符(如
user-id),必须用方括号:pm.response.json()["user-id"]
把提取的值存成环境变量或全局变量
提取只是第一步,存下来才能在后续请求中复用。注意变量作用域和覆盖风险:
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
- 存环境变量(推荐):
pm.environment.set("token", pm.response.json().data.token) - 存全局变量(慎用):
pm.globals.set("order_id", pm.response.json().order.id) - ⚠️ 重要:如果多个请求都设同一个变量名(如
user_id),后执行的会覆盖前一个——调试时容易误以为“没提取成功”,其实是被别的请求冲掉了 - 变量值始终是字符串类型,即使原 JSON 是数字;需要数值计算时得显式转:
parseInt(pm.environment.get("count"))
非 JSON 响应怎么提取?别硬套 json()
遇到 XML、纯文本、带 BOM 的 UTF-8 响应,pm.response.json() 必挂。此时改用正则或字符串操作:
- 提取 XML 中的
:123 const match = pm.response.text().match(/<id>([^/); if (match) pm.environment.set("xml_id", match[1]);</id> - 提取 Set-Cookie 中的 sessionid:
pm.response.headers.find(h => h.key === "Set-Cookie")?.value.match(/sessionid=([^;]+)/)?.[1] - ⚠️ 注意:正则提取不稳定,优先推动后端返回标准 JSON;若必须用,务必加
?.[1]防止Cannot read property '1' of null
真正难的不是语法,而是每次提取前得看一眼实际响应体——点开 Postman 的 Body → Pretty / Raw,确认结构、空值、大小写、嵌套层级。跳过这步,写的代码越“规范”,越跑不通。










