1. 概述
在Postman中,变量让我们能保存值并在不同API中按需使用。我们可以通过将这些值传递给集合、环境或任何请求来引用它们。本质上,变量让我们能更高效地访问存储的值。此外,我们还可以利用这些变量与团队成员协作或在Postman中设置动态工作流。
本文将深入探讨变量的类型、作用域以及如何将它们嵌入API中。
2. 什么是变量?
变量是数据的符号化表示,让我们无需手动输入即可在需要的地方访问值。当需要在多个位置使用相同值时(如基础URL、令牌或路径参数),变量就特别有用。使用变量还能让请求更灵活——修改变量值会自动更新所有使用该变量的位置。
在Postman中,变量被定义为键值对。键是变量名,通过它可以直接访问对应的值。
此外,我们还可以使用环境来设置一组变量。这些变量的值会根据所选环境而变化。
下面深入探讨变量及其不同作用域:
2.1. 变量作用域
Postman提供多种作用域,让我们能在不同环境中使用不同值进行开发和测试。按覆盖范围从广到窄排列:
- 全局变量:在整个工作空间内都可访问,作用域最广。可在工作空间内的多个请求和集合中使用。
- 集合变量:仅在特定集合内可访问。集合内的所有请求都能使用,且不随环境变化而改变。
- 环境变量:根据不同环境限定作用域。当我们切换环境(如本地、测试或生产环境)时,这些变量值会随之改变。
- 数据变量:外部变量类型,在使用Collection Runner运行集合时定义数据集。可从CSV或JSON文件提取。其当前值在请求或集合执行后不会持久化。
- 局部变量:也称临时变量,仅能通过请求脚本访问。作用域仅限于当前请求或集合,执行完成后即失效。
2.2. 变量类型
全局变量和环境变量可进一步分类:
- 默认类型:变量的默认类型,以纯文本形式显示,无额外属性。
- 密钥类型:类似密码,在所有工作空间中隐藏初始值和当前值。用于防止敏感数据意外泄露。
3. 按作用域定义变量
我们可以在请求构建器的任意作用域定义变量。具体步骤如下:
- 选中文本后点击"设为变量"(Set as a variable)
- 将其存储为新变量
- 输入键名并从Postman提供的不同作用域中选择:
3.1. 将响应体设为变量
请求响应体中的值也可以设置为变量,并在集合中后续使用。这有助于按顺序运行多个请求并创建特定工作流。
操作步骤:
- 选中要保存的文本
- 右键(或Control+单击)选择"存储为变量"
- 从环境、局部或全局等作用域中选择
- 命名变量并保存:
3.2. 定义全局变量
设置全局变量的两种方式:
- 直接创建:
- 在全局变量区域点击"添加新变量"
- 输入变量名后保存
- 从现有值创建:
- 选中值后选择"全局"类型存储
- 别忘记点击保存图标
确认更改
导出共享全局变量:
- 在侧边栏选择"全局"环境类型
- 点击"导出"按钮将变量导出到文件
- 保存文件后即可分享
3.3. 定义环境变量
设置环境变量的步骤:
- 点击"添加新变量"
- 输入变量名
- 选择类型为"环境"
- 指定初始值和当前值
- 点击保存图标
确认
3.4. 定义集合变量
Postman允许添加集合变量:
- 在侧边栏选择"集合"
- 点击"变量"标签页
- 添加集合变量:
3.5. 在脚本中定义变量
除了通过界面定义,还可以在请求脚本中编程设置变量。所有方法都接受(variable_key, variable_value)参数:
pm.globals
:定义全局变量pm.globals.set("variable_key", "variable_value");
pm.collectionVariables
:定义集合作用域变量pm.collectionVariables.set("variable_key", "variable_value");
pm.environment
:定义当前环境变量pm.environment.set("variable_key", "variable_value");
pm.variables
:定义局部/临时变量pm.variables.set("variable_key", "variable_value");
unset
:删除已设置的变量(根据作用域选择对象)pm.environment.unset("variable_key");
3.6. 在脚本中使用变量
使用以下方法获取变量当前值:
pm.variables.get("variable_key")
:访问任意作用域变量(包括局部)pm.globals.get("variable_key")
:访问全局变量pm.collectionVariables.get("variable_key")
:访问集合变量pm.environment.get("variable_key")
:访问环境变量
关键点:pm.variables.get()
会自动返回优先级最高的变量值,无需手动指定作用域。
4. 使用变量
定义好变量后,来看看如何在请求路径和请求体中使用:
在Postman中引用变量时,用双花括号包裹变量名。无论变量类型和作用域如何,这是Postman的通用标准语法:
{{studentName}}
当运行CURL或发送请求时,Postman会自动解析变量并替换为当前值。以下URL引用了变量:
http://localhost:8080/get?student_name={{studentName}}
假设studentName
的值为"John",Postman会自动将其转换为:
http://localhost:8080/get?student_name=John
5. 总结
本文通过GUI模式演示了Postman变量的基础用法,并深入探讨了:
- 变量的类型与作用域
- 在URI、请求体、请求头等位置初始化变量
- 通过脚本动态操作变量
核心优势:避免重复初始化相同值,显著提升开发效率。对于需要多环境协作的团队,变量功能更是必不可少——简单粗暴但极其实用!