Postman中需用{{id}}引用变量而非{ id },先在Tests脚本中用pm.environment.set()提取并存储ID,再于URL路径中使用双大括号语法替换,注意变量名、作用域及环境切换一致性。

Postman 里把上一个接口返回的 ID 塞进下一个请求的 URL 路径中,不是靠“粘贴复制”,而是靠变量引用 + 正确提取 + 路径占位符三者配合。关键点在于:路径里的 {id} 这种写法本身不生效,必须先定义变量、再在 URL 中用 {{id}} 替换。
怎么在 URL 路径里正确引用返回的 ID
Postman 的请求路径不支持直接解析 JSON 路径或自动替换 {id} 这类 REST 风格占位符。你看到的 /users/{id} 是文档示例,实际要用 /users/{{user_id}} 这种双大括号语法才真正生效。
- 错误写法:
/api/v1/order/{order_id}→ Postman 不会做任何替换,原样发出去 - 正确写法:
/api/v1/order/{{order_id}}→ 前提是order_id已被设为环境/全局变量 - 路径中多个变量也一样处理,比如
/orgs/{{org_id}}/members/{{member_id}} - 如果路径带查询参数,
{{id}}只影响路径段,不影响?key=value部分
从响应体提取 ID 并存为变量的常见写法
提取逻辑写在当前请求的 Tests 标签页里,用 JavaScript 解析 responseBody。注意别漏掉 JSON.parse() 和异常捕获,否则脚本静默失败,变量根本不会设置。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
- 最简安全写法:
try { const res = JSON.parse(responseBody); pm.environment.set("user_id", res.data?.id || res.id || res.userId); } catch (e) { console.error("ID 提取失败", e); } - 如果 ID 在嵌套对象里(如
result.data.id),必须按实际结构取,不能硬写res.id - 避免用
postman.setEnvironmentVariable()—— 这是旧版 API,v8+ 后已废弃,应统一用pm.environment.set() - 若需跨环境复用(比如登录后所有集合都用同一个 token),改用
pm.globals.set("token", ...)
为什么用了 {{id}} 还是 404 或 400
变量名拼错、作用域不对、提取时机不对,这三类问题占了八成以上。Postman 不报错也不提示,只默默发一个含原始字符串的请求。
-
{{user_id}}和pm.environment.set("userId", ...)名字不一致 → 变量为空字符串,最终路径变成/users/,触发 404 - 没选中对应环境(右上角环境下拉菜单为空或选错)→ 变量存在但未激活
- 在 Pre-request Script 里读取变量却没在 Tests 里设置 → 执行顺序是 Pre-request → Send → Tests,变量还没生成
- ID 是数字类型,但某些后端严格校验路径中是否为纯数字;若变量值是
"123"(字符串)而接口要求123(整数),可能被拒绝(少见但存在)
最易被忽略的是环境切换和变量作用域混用:一个请求设了 pm.environment.set(),下一个请求却在另一个未激活的环境里运行,或者误用了 pm.globals 而没清空历史值。建议每次调试前,在 Console 里手动敲 pm.environment.get("id") 确认值是否存在且正确。

















