使用变量(Variables)
变量使你能够在 Postman 中存储和重用值。通过将值存储为变量,你可以在整个集合、环境、请求和测试脚本中引用它。变量可帮助你高效工作、与队友协作以及设置动态工作流。
变量快速入门
要创建和使用变量,请执行以下操作:
在 工作台中 选择环境快速查看图标 。
在 Globals旁边,选择Edit(如果尚未添加任何变量,则选择Add )。
添加一个变量 named
my_variable
并给它一个初始值Hello
.选择 Save,然后关闭环境选项卡。
打开一个新的请求选项卡并输入
https://postman-echo.com/get?var={{my_variable}}
URL。将鼠标悬停在变量名称上以检查变量的值和范围。选择发送并发送请求。检查响应,确认 Postman 将变量值发送到 API。
更改环境快速查看中的值并再次发送请求。
了解变量
变量是数据的符号表示,使你无需在任何需要的地方手动输入即可访问值。如果你在多个地方使用相同的值,这会很有用。通过抽象细节,变量使你的请求更加灵活和可读。
例如,如果你在多个请求中有相同的 URL,但 URL 稍后可能会更改,你可以将 URL 存储在一个变量中,base_url
并在你的请求中使用{{base_url}}
. 如果 URL 发生变化,你可以更改变量值,它会反映在整个集合中,无论你在何处使用变量名称。
同样的原则适用于你请求中重复数据的任何部分。当你的请求运行时,无论你在何处引用该变量,变量中存储的任何值都将包含在内。如果基本 URL 值为https://postman-echo.com
,并且被列为使用的请求 URL 的一部分{{base_url}}/get
,Postman 会将请求发送到https://postman-echo.com/get
。
Postman 中的变量是键值对。每个变量名都代表它的键,因此引用变量名可以让你访问它的值。
你可以使用变量在请求和测试之间传递数据,例如,如果你在集合中 链接请求。
你可以使用环境将变量集组合在一起并与协作者共享它们,例如,如果你将一组配置详细信息用于生产服务器,另一组用于测试。有关如何将环境整合到团队工作流中的更多信息,请参阅 管理环境。
变量作用域
Postman support 不同范围的变量,允许你针对各种开发、测试和协作任务定制你的处理。Postman 中的范围与你的请求运行的不同上下文相关,不同的变量范围适用于不同的任务。
按照从最广泛到最狭窄的顺序,这些范围是:global、collection、environment、data和local。
- 全局变量使你能够访问集合、请求、测试脚本和环境之间的数据。 全局变量在整个工作空间 中可用。由于全局变量在 Postman 中具有最广泛的可用范围,因此它们非常适合测试和原型制作。在以后的开发阶段,使用更具体的范围。
- 集合变量在集合中的整个请求中都可用,并且独立于环境。集合变量不会根据所选环境而改变。如果你使用单一环境,例如身份验证或 URL 详细信息,集合变量是合适的。
- 环境变量使你能够将工作范围限定在不同的环境中,例如本地开发与测试或生产。一次可以激活一个环境。如果你只有一个环境,使用集合变量会更有效,但环境使你能够指定 基于角色的访问级别 。
- 数据变量来自外部 CSV 和 JSON 文件,用于定义你在使用 Newman 或 Collection Runner 运行集合时可以使用的数据集。数据变量具有当前值,这些值不会在请求或 collection run 之后持续存在。
- 局部变量是在你的请求脚本中访问的临时变量。局部变量值的范围限定为单个请求或集合运行,并且在运行完成后不再可用。如果你需要一个值来覆盖所有其他变量范围,但不希望该值在执行结束后持续存在,那么局部变量是合适的。
如果在两个不同的作用域中声明了同名变量,则将使用存储在作用域最窄的变量中的值。例如,如果有一个名为 的全局变量
username
和一个名为 的局部变量username
,则在请求运行时将使用局部值。
Postman 将变量存储为字符串。
JSON.stringify()
如果你存储对象或数组,请在存储之前记住它们,并JSON.parse()
在检索它们时记住它们。
变量类型
除了范围之外,全局变量和环境变量也可以按类型定义。你可以为全局变量和环境变量配置的两种变量类型是:
- 默认类型自动分配给变量。此类型显示为纯文本,没有额外的属性。
- Secret 类型屏蔽所有工作空间成员的 初始值和当前值 ,可用于防止无意中泄露敏感数据,包括 API 机密、密码、令牌和密钥。
对工作空间(对于全局变量)或环境(对于环境变量)具有 编辑 访问权限的用户可以选择将这些变量从默认类型更改为机密类型。
无论你为变量配置何种类型,Postman 都会将变量作为字符串存储在其服务器上。要了解 Postman 如何保护你的数据安全,请参阅 Postman 的安全性 。
要将变量类型设置为机密,请执行以下操作:
在 工作台中 选择环境快速查看图标 。
对于环境或全局变量,选择编辑以打开编辑器。
你还可以通过导航到环境所在的工作空间并从边栏中选择环境,然后选择你的环境来编辑环境。
选择要更改的变量旁边的默认值以打开下拉列表,然后选择**机密**以更新变量类型。
选择 保存以确认你的更改。
从秘密变量类型更改为默认变量类型
你必须对工作空间(对于全局变量)或环境(对于环境变量)具有 编辑器访问权限才能控制变量类型。 编辑者可以随时将变量类型从秘密更改为默认,反之亦然。当你将变量的类型从 secret 更改回默认值时,你必须通过选择Change type进行确认。
查看和更改秘密变量值
所有工作空间成员都可以通过选择变量旁边的眼睛图标来查看秘密变量的初始值和当前值 。
编辑者可以通过选择变量旁边的眼睛图标,然后选择初始值来更改与协作者共享的变量的 初始值。 所有协作者都可以通过选择眼睛图标,然后选择当前值来更改变量的当前值 。
定义变量
你可以通过多种方式定义变量,具体取决于你是需要 全局范围 、 环境范围 还是 集合 范围。
要在请求构建器中的任何范围内定义变量,请执行以下操作:
选择你需要的数据,例如地址、参数、标题或正文。选择设置为变量。
选择设置为新变量。
输入名称,确认值正确,然后选择一个范围。选择设置变量。
请记住删除不再使用的变量。
将响应主体值设置为变量
要将现有变量的值设置为请求响应正文中的值,请执行以下操作:
- 选择文本,然后右键单击或按住 Control 单击。
- 选择相关范围(环境或全局),然后选择变量的名称。
定义全局变量
要查看全局变量,请执行以下操作:
- 在边栏中选择环境。
- 选择全局。
你还可以通过选择工作台中 的环境快速查看图标来查看全局变量 。
环境快速查看显示所选环境以及工作空间中的全局变量。你可以通过选择值来直接编辑现有变量的当前值。要添加变量,请选择全局部分旁边的编辑。
要添加新的全局变量,请执行以下操作:
- 选择添加新变量,然后输入变量的名称。
- 为新变量选择类型。
- 添加一个Initial Value,如果你选择,则添加一个Current Value。
- 选择 保存以确认你的更改。
要编辑现有的全局变量,请执行以下操作:
- 更改所需的变量值。
- 选择 保存以确认你的更改。
你还可以 在脚本中定义全局变量 。
下载全局环境
要将全局变量下载为 JSON,请执行以下操作:
- 在边栏中选择环境。
- 选择全局。
- 选择导出。
- 选择保存文件的位置,然后选择保存。
定义环境变量
要查看环境变量,请执行以下操作:
- 在边栏中选择环境。
- 选择要检查变量的环境。
你还可以通过在 工作台中 选择环境快速查看图标来检查环境变量 。
环境快速查看显示所选环境以及工作空间中的全局变量。你可以通过选择值来直接编辑现有变量的当前值。要添加变量,请选择环境部分旁边的编辑。
要添加新的环境变量,请执行以下操作:
- 选择添加新变量,然后输入变量的名称。
- 为新变量选择类型。
- 添加一个Initial Value,如果你选择,则添加一个Current 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 | 你可以使用unset 删除变量。 | pm.environment.unset("variable_key"); |
如果你没有环境的编辑访问权限,你的脚本代码将影响当前值,但不会与你的团队同步或共享。
有关如何在预请求或测试脚本中使用变量的说明,请参阅 在脚本中使用变量 。
指定变量详细信息
你可以随时添加和编辑变量。你需要为新变量包含的只是一个名称。你可以选择提供初始值,但也可以稍后设置,包括来自 脚本 。使用变量的复选框来打开或关闭它。
共享集合或环境时共享初始值。当前值是本地的,未同步或共享。有关本地变量与同步变量的更多信息,请参阅 共享和持久化数据。
使用变量
你可以在整个 Postman 中使用双花括号来引用变量。例如,要在你的请求授权设置中引用名为“用户名”的变量,你可以使用以下语法并在名称两边加上双花括号:
当你运行请求时,Postman 将解析变量并将其替换为当前值。
例如,你可以有一个引用变量的请求 URL,如下所示:
https://postman-echo.com/get?customer_id={{cust_id}}
cust_id
当请求运行时,Postman 将发送你当前为变量存储的任何值。如果cust_id
是 currently 3
,请求将发送到以下 URL,包括查询参数:
https://postman-echo.com/get?customer_id=3
如果你想从请求主体中访问变量,请将其引用用双引号引起来:
{ "customer_id" : "{{cust_id}}" }
你可以在请求 URL、参数、header、授权、正文和 header 预设中使用变量。
当你将鼠标悬停在变量上时,Postman 会显示其当前状态的概览。当你向请求添加变量时,Postman 会提示你输入当前定义的任何变量。
提示指示当前值、范围(以颜色突出显示)和相关的覆盖状态。
如果变量未解析,Postman 会将其突出显示为红色。有关如何修复未解析变量的信息,请参阅 修复未解析变量 。
使用动态变量
Postman 提供了你可以在请求中使用的动态变量。
动态变量的例子包括:
{{$guid}}
: v4 风格的 GUID{{$timestamp}}
: 以秒为单位的当前 Unix 时间戳{{$randomInt}}
: 0 到 1000 之间的随机整数
有关完整列表,请参阅 动态变量部分。
在脚本中使用变量
你可以使用表示范围级别的对象和方法来检索脚本中变量的当前值.get
:
//access a variable at any scope including local
pm.variables.get("variable_key");
//access a global variable
pm.globals.get("variable_key");
//access a collection variable
pm.collectionVariables.get("variable_key");
//access an environment variable
pm.environment.get("variable_key");
使用
pm.variables.get()
to access variables in your scripts 让你可以选择更改变量范围而不影响你的脚本功能。此方法将返回当前具有最高优先级(或最窄范围)的任何变量。
要在预请求或测试脚本中使用 动态变量 pm.variables.replaceIn()
,请使用,例如pm.variables.replaceIn('{{$randomFirstName}}')
。
有关使用变量编写脚本的更多详细信息,请参阅 沙盒参考。
记录变量
你可以在请求运行时将变量值记录到 Postman 控制台。
在脚本中使用以下语法来记录变量的值:
console.log(pm.variables.get("variable_key"));
要查看结果,请选择 页脚中的 控制台。**你还可以通过选择 View > Show Postman Console**来访问控制台。
使用数据变量
Collection Runner 允许你导入 CSV 或 JSON 文件,并在请求和脚本中使用数据文���中的值。你不能在 Postman 中设置数据变量,因为它是从数据文件中提取的,但是你可以在脚本中访问数据变量,例如使用pm.iterationData.get("variable_name")
.
有关详细信息,请参阅 使用数据文件 和 Sandbox API 参考 。
共享和持久化数据
当你在 Postman 中编辑全局、集合和环境变量时,有一个当前值,你可以为各个变量选择保留或重置。你还可以选择Persist All或Reset All以将此设置应用于所有变量。这些使你能够控制本地 Postman 实例中发生的事情,而与数据如何与共享你的工作空间、请求、集合和环境的任何人同步无关。
创建或编辑变量时,可以输入初始值和当前值。当你在 Postman 中创建一个新变量时,如果你将当前值留空,它将自动填充初始值。如果你指定一个当前值,它将是你实例的本地值。Persist选项允许你将当前值推送到共享数据,更新初始值以匹配当前值。
如果你没有环境的编辑者访问权限,则无法编辑环境变量的初始值。你可以编辑当前值,并且你的编辑不会对共享你 工作空间 的任何人可见。
使用Persist可以使你的当前值与 Postman 的服务器 同步 ,并反映给共享你的收藏或环境的任何人。要重置当前本地值以反映初始共享值,请使用Reset。
要保留单个值,请执行以下操作:
- 将鼠标悬停在变量的当前值上。
- 选择值旁边的更多操作图标 。
- 选择坚持。
你在 Postman 中的本地会话可以使用对你可见的临时值,但不会与你的团队同步或共享。这使你可以使用私人凭据或实验值进行开发和测试,而不会暴露这些细节或影响你团队中的其他人。
例如,你的团队可能拥有共享的 API 密钥和单独的 API 密钥。你可以使用个人密钥在本地进行实验性开发工作,但使用共享密钥进行团队协作。同样,你可以有一个变量来表示你在本地进行但尚未准备好与团队共享的探索性工作。你可以稍后选择保留本地数据,以便你团队中的其他人也可以访问它。
你可以使用工作台中 的环境快速查看图标在线编辑当前值 。
有关作为团队使用变量的更多信息,请参阅 管理环境 。
局部变量和数据变量具有当前值,这些值不会在请求或 collection run 之后持续存在。
修复未解决的变量
未解析的变量是未在 活动范围 (环境、集合或全局)中定义的变量,该范围可用于使用它的请求。
例如,对于请求https://postman-echo.com/get?customer_id={{cust_id}}
,Postman 希望能够{{cust_id}}
在请求使用的环境中、请求保存的集合中或全局级别找到定义。{{cust_id}}
如果 Postman 在其中一个范围内找不到 for 的定义,它会将变量标记为未解析。如果你发送包含未解析变量的请求,请求可能会失败。
由于以下原因,变量可能无法解析:
- 该变量不在请求的 活动范围内
- 变量已创建但更改未保存
- 变量所在的环境不活跃
- 变量在活动环境中关闭
当你处理 API 请求时,Postman 会在URL 构建器、Params选项卡、Authorization选项卡和Headers选项卡中突出显示未解析的变量。Postman 以红色突出显示未解析的变量文本。有关错误及其解决方法的更多详细信息,请将鼠标悬停在未解决的变量上。
要检查变量是否可用以及是否在请求范围内,请执行以下操作:
- 选择集合或全局链接之一。要打开环境,请使用选择环境链接。
- 打开或对变量的值进行必要的更改。
- 选择 保存以确认你的更改。
要设置因不存在而无法解析的变量,请执行以下操作:
- 选择添加新变量。
- 输入名称,为变量设置值,然后从下拉列表中选择适当的范围(全局、集合或环境)。
- 选择设置变量。
在脚本中以编程方式定义的 变量会根据变量范围进行不同的解析。这意味着未解析的变量也将以不同的方式处理。以编程方式设置的局部变量
pm.variables.set
可能看起来未解析,因为它们未存储并且仅在运行时使用,但如果正确设置和使用它们,请求仍将成功运行。以编程方式设置的环境变量、全局变量和集合变量将被保存以备后用,因此如果它们被正确设置和使用,它们将被解析。根据脚本中未解析变量的使用方式,你可能会收到400 Bad Request
来自 API 的错误响应,或者 Postman 可能根本无法发送请求。打开 控制台 帮助识别脚本中未解析的变量。