Postman URL中可用{{variable_name}}插入变量,需确保变量已定义、作用域生效且环境已选中;动态变量如{{$timestamp}}须带$前缀,脚本中须用pm.variables.replaceIn()获取。

Postman 的 URL 中可以直接用 {{variable_name}} 插入变量,但必须确保变量已正确定义、作用域生效,且不能在脚本里直接写 {{...}} —— 否则会当纯文本发送,不解析。
URL 中引用变量的正确写法
只要变量存在(global / collection / environment / data),在请求 URL 输入框任意位置写 {{base_url}}、{{path}}、{{id}} 都会被实时替换。比如:
https://{{base_url}}/api/v1/users?limit={{page_size}}-
https://api.example.com/{{version}}/order/{{$guid}}(注意:{{$guid}}是动态变量,需带$)
鼠标悬停在 {{...}} 上,Postman 会显示当前解析值和变量来源(比如 “Environment: base_url”),这是验证是否生效最直接的方式。
为什么 URL 里变量没替换?常见原因
变量未定义或拼写错误、环境未选中、作用域被覆盖,这三类问题占 90% 以上:
- 检查右上角环境选择器 —— 如果显示
No environment,{{...}}全部失效 - 变量名大小写敏感:
{{Base_URL}}≠{{base_url}} - 同名变量存在多个作用域时,优先取最窄范围的值(如 environment 变量会覆盖 global 变量)
- URL 中误用了脚本语法,例如写了
pm.environment.get("base_url")—— 这在 URL 框里就是普通字符串,不会执行
动态变量(如 {{$timestamp}})在 URL 中怎么用
动态变量专为运行时生成值设计,全部以 $ 开头,只支持在请求构建器(URL / headers / body)中使用,不能在 Pre-request Script 或 Tests 里直接写 {{...}}:
- 合法用法:
https://api.test.com/log?ts={{$timestamp}}&id={{$guid}} - 非法用法:
https://api.test.com/log?ts={{timestamp}}(缺$,当成普通变量查,找不到就留空) - 常见可用动态变量:
{{$guid}}、{{$timestamp}}、{{$randomInt}}、{{$isoTimestamp}}
注意:{{$randomCountry}} 等 faker 类变量需 Postman v9.30+,旧版本不识别。
脚本里想拼 URL 怎么办
Pre-request Script 或 Tests 中无法直接用 {{...}},必须通过 API 获取:
- 取普通变量:
pm.environment.get("base_url")或pm.variables.get("base_url") - 取动态变量:
pm.variables.replaceIn("{{$timestamp}}")—— 这是唯一能拿到运行时值的方式 - 拼接示例:
const url = pm.environment.get("base_url") + "/users/" + pm.variables.replaceIn("{{$guid}}");
别忘了用 pm.request.url = url 手动重设请求地址,否则拼了也白拼。
最容易被忽略的是:动态变量在脚本中不可见,也不进变量面板;它只在请求真正发出前一刻生成,且每次请求都不同 —— 所以调试时别指望 console.log({{...}}) 能看到值,必须用 replaceIn() 显式提取。











