使用变量

变量使您能够在 Postman 中存储和重用值。通过将值存储为变量,您可以在整个集合、环境、请求和测试脚本中引用它。变量可帮助您高效工作、与队友协作并设置动态工作流程。

内容

变量快速入门

要尝试一个变量:

  1. 选择Postman 右上角的Environment quick look 。 外部链接图标

  2. 在Globals旁边,选择Edit

  3. 添加一个名为的变量my_variable,并给它一个初始值Hello

  4. 选择保存图标 保存并关闭环境对话框。

  5. 打开一个新的请求选项卡并https://postman-echo.com/get?var={{my_variable}}作为 URL 输入。将鼠标悬停在变量名称上,您将看到变量的值和范围。

    查看变量值和范围
  6. 选择发送并发送请求。在响应中,您会看到 Postman 将变量值发送到 API。

  7. 尝试更改环境快速查看中的值并再次发送请求。

理解变量

变量是数据的符号表示,使您无需在需要的任何地方手动输入值即可访问值。如果您在多个地方使用相同的值,这会很有用。变量通过抽象细节使您的请求更加灵活和可读。

例如,如果您在多个请求中具有相同的 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 支持不同范围的变量,允许您针对各种开发、测试和协作任务定制处理。Postman 中的作用域与您的请求运行的不同上下文相关,不同的变量作用域适用于不同的任务。

从最宽到最窄的顺序,这些范围是:globalcollectionenvironmentdatalocal

  • 全局变量使您能够访问集合、请求、测试脚本和环境之间的数据。全局变量在整个工作区中都可用。由于全局变量在 Postman 中具有最广泛的可用范围,因此它们非常适合测试和原型设计,但在以后的开发阶段应使用更具体的范围。
  • 集合变量在集合中的整个请求中都可用,并且独立于环境。集合变量不会根据所选环境而改变。如果您使用单一环境,例如用于身份验证或 URL 详细信息,则集合变量是合适的。
  • 环境变量使您能够将工作范围限定到不同的环境,例如本地开发与测试或生产。一次可以激活一个环境。如果你有一个单一的环境,使用集合变量会更有效,但是环境允许你指定基于角色的访问级别
  • 数据变量来自外部 CSV 和 JSON 文件,用于定义在使用NewmanCollection Runner运行集合时可以使用的数据集。数据变量具有当前值,在请求或收集运行之后不会持续存在。
  • 局部变量是在请求脚本中访问的临时变量。局部变量值的范围仅限于单个请求或收集运行,并且在运行完成后不再可用。如果您需要一个值来覆盖所有其他变量范围但不希望该值在执行结束后持续存在,则局部变量是合适的。

如果在两个不同的作用域中声明了同名变量,则将使用存储在具有最窄作用域的变量中的值。例如,如果有一个名为 的全局变量username和一个名为 的局部变量username,则请求运行时将使用局部值。

Postman 将变量存储为字符串。如果您存储对象或数组,请JSON.stringify()在存储之前记住它们,并JSON.parse()在检索它们时记住它们。

变量类型

除了范围之外,全局变量和环境变量也可以按类型定义。您可以为全局变量和环境变量配置的两种变量类型是:

  • 默认类型自动分配给变量。此类型显示为纯文本,没有其他属性。
  • 秘密类型掩盖了所有工作区成员的初始值和当前值,可用于防止无意泄露敏感数据,包括 API 秘密、密码、令牌和密钥。

对工作区(用于全局变量)或环境(用于环境变量)具有编辑器访问权限的用户可以选择将这些变量从默认类型更改为机密类型。

无论您为变量配置什么类型,Postman 都将变量作为字符串存储在其服务器上。要了解 Postman 如何保护您的数据安全,请参阅Postman的安全性。

要将变量类型设置为机密:

  1. 环境快速查看图标选择Postman 右上角的环境快速查看。

  2. 选择环境或全局变量右侧的编辑以打开编辑器。

    环境编辑器

    您还可以通过导航到环境所在的工作区并从左侧边栏中选择环境来编辑环境,然后选择您的环境。

  3. 选择要更改的变量旁边的默认值以打开下拉列表,然后选择秘密以更新变量类型。

  4. 选择保存图标 保存以确认您的更改。

环境编辑器

从秘密更改为默认变量类型

您必须对工作区(对于全局变量)或环境(对于环境变量)具有编辑器访问权限才能控制变量类型。编辑者可以随时将变量类型从秘密更改为默认值,反之亦然。当您将变量的类型从秘密更改回默认值时,您必须通过选择更改类型进行确认。

确认取消将变量标记为机密

查看和更改秘密变量值

眼睛划掉图标所有工作区成员都可以通过选择变量右侧的眼睛符号来查看秘密变量的初始值和当前值。

编辑者可以更改与协作者共享的变量的初始值,方法是选择眼睛划掉图标变量右侧的眼睛符号,然后选择初始值。所有协作者都可以通过选择眼睛划掉图标变量右侧的眼睛符号,然后选择当前值来更改变量的当前值。

定义变量

您可以通过多种方式定义变量,具体取决于您是否需要全局环境集合范围。

您还可以在请求构建器的任何范围内定义变量:

  1. 选择您需要的数据,例如在地址、参数、标题或正文中。选择设置为变量

    设置为变量
  2. 选择设置为新变量

    设置为变量
  3. 输入Name,验证Value,然后从下拉列表中选择一个范围。选择设置变量

    设置为变量

请记住删除不再使用的变量。

将响应正文值设置为变量

您可以将现有变量的值设置为请求响应正文中的值:

  1. 选择文本,然后右键单击或按住 Control 单击。
  2. 选择相关范围(环境或全局),然后选择变量的名称。
从文本设置变量

定义全局变量

查看全局变量:

  1. 在左侧边栏中选择环境。
  2. 选择全局变量

您还可以通过选择右上角的环境快速查看来查看全局变量。 外部链接图标

环境快速查看显示所选环境以及工作区中的全局变量。您可以通过选择值在线编辑现有变量的当前值。要添加变量,请选择全局部分旁边的编辑。

添加一个新的全局变量:

  1. 选择添加新变量,然后输入变量的名称。
  2. 为新变量选择类型
  3. 添加一个Inital Value,如果您选择,添加一个Current Value
  4. 选择保存图标 保存以确认您的更改。

要编辑现有的全局变量:

  1. 更改所需的变量值。
  2. 选择保存图标 保存以确认您的更改。

您还可以在脚本中定义全局变量

下载全局环境

要将全局变量下载为 JSON:

  1. 在左侧边栏中选择环境。
  2. 选择全局变量
  3. 选择导出
  4. 选择保存文件的位置,然后选择保存

定义环境变量

查看环境变量:

  1. 在左侧边栏中选择环境。
  2. 选择要查看其变量的环境。

您还可以通过选择右上角的环境快速查看来查看环境变量。 外部链接图标

环境快速查看显示所选环境以及工作区中的全局变量。您可以通过选择值在线编辑现有变量的当前值。要添加变量,请选择环境部分旁边的编辑。

添加一个新的环境变量:

  1. 选择添加新变量,然后输入变量的名称。
  2. 为新变量选择类型
  3. 添加一个Inital Value,如果您选择,添加一个Current Value
  4. 选择保存图标 保存以确认您的更改。

要编辑现有环境变量:

  1. 更改所需的变量值。
  2. 选择保存图标 保存以确认您的更改。
  • 如果您对环境具有编辑者访问权限,则可以添加和编辑变量。
  • 如果您对环境具有查看者访问权限,则只能更新现有变量的当前值。您可以访问您编辑的任何变量,但您的工作区中的协作者无法访问。

有关在团队中使用环境的更多信息,请参阅管理环境。

您还可以在脚本中定义环境变量

定义集合变量

您可以在创建集合时或之后的任何时间添加集合变量。

要为现有集合创建或编辑变量:

  1. 在左侧边栏中选择集合。
  2. 选择一个集合,然后选择变量选项卡。

编辑收藏

如果您没有收藏的编辑权限,您将看到一个请求访问按钮。您将无法添加新的集合变量、更新初始值或保留值。您可以编辑当前值以供本地使用,使用同名的环境变量覆盖集合变量,或请求编辑器访问集合。

您还可以在脚本中定义集合变量

在脚本中定义变量

您可以在请求脚本中以编程方式设置变量。

方法 用例 例子
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 中的变量。例如,要在请求授权设置中引用名为“用户名”的变量,您可以使用以下语法,并在名称周围加上双花括号:

{{username}}

当您运行请求时,Postman 将解析变量并将其替换为当前值。

例如,您可以有一个引用变量的请求 URL,如下所示:

https://postman-echo.com/get?customer_id={{cust_id}}

cust_idPostman 将在请求运行时发送您当前为变量存储的任何值。如果cust_id是 current 3,请求将被发送到以下 URL,包括查询参数:

https://postman-echo.com/get?customer_id=3

如果您想从请求正文中访问变量,请将其引用括在双引号中:

{ "customer_id" : "{{cust_id}}" }

您可以在请求 URL、参数、标头、授权、正文和标头预设中使用变量。

请求中的变量

当您将鼠标悬停在变量上时,您可以看到其当前状态的概览。当您在请求中输入变量时,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()访问脚本中的变量可以让您在不影响脚本功能的情况下更改变量范围。此方法将返回当前具有最高优先级(或最窄范围)的任何变量。

要在预请求或测试脚本中使用动态变量pm.variables.replaceIn(),请使用pm.variables.replaceIn('{{$randomFirstName}}').

有关使用变量编写脚本的更多详细信息,请参阅沙盒参考

记录变量

您可以在请求运行时将变量值记录到Postman 控制台。

在脚本中使用以下语法记录变量的值:

console.log(pm.variables.get("variable_key"));

要查看结果,请从 Postman 左下方的按钮或查看菜单中打开控制台。

记录变量

使用数据变量

Collection Runner 允许您导入 CSV 或 JSON 文件,并在请求和脚本中使用数据文件中的值。您不能在 Postman 中设置数据变量,因为它是从数据文件中提取的,但您可以在脚本中访问数据变量,例如使用pm.iterationData.get("variable_name").

有关更多详细信息,请参阅使用数据文件沙盒 API 参考

共享和持久化数据

当您在 Postman 中编辑全局、集合和环境变量时,您将看到一个当前值,您可以选择为单个变量保留重置。您还可以选择Persist AllReset All将此设置应用于所有变量。这些使您能够控制本地 Postman 实例中发生的事情,而与数据如何与共享您的工作区、请求、集合和环境的任何人同步无关。

创建或编辑变量时,可以输入初始值和当前值。在 Postman 中创建新变量时,如果将当前值留空,它将自动填充初始值。如果您指定一个当前值,它将是您的实例的本地值。Persist选项允许您将当前值推送到共享数据,更新初始值以匹配当前值。

如果您没有环境的编辑者访问权限,则无法编辑环境变量的初始值。您可以编辑当前值,并且共享您的工作区的任何人都看不到您的编辑。

使用Persist可以使您的当前值与 Postman 的服务器同步,并反映给共享您的收藏或环境的任何人。要重置您当前的本地值以反映初始共享值,请使用Reset

要保留单个值:

  1. 将鼠标悬停在变量的当前值上。
  2. 三个点图标选择值旁边的三个点。
  3. 选择坚持

您在 Postman 中的本地会话可以使用对您来说是短暂且可见的值,但不会与您的团队同步或共享。这使您可以使用私有凭据或实验值进行开发和测试,而不会暴露这些细节或影响团队中的其他人。

例如,您的团队可能有一个共享的 API 密钥和单独的 API 密钥。您可以使用个人密钥在本地进行实验性开发工作,但使用共享密钥进行团队协作。同样,您可以有一个变量来表示您正在本地进行的探索性工作,但尚未准备好与团队共享。您可以稍后选择保留本地数据,以便团队中的其他人也可以访问它。

您可以从Postman 右上角的环境快速查看 内联编辑当前值。外部链接图标

有关作为团队使用变量的更多信息,请参阅管理环境

本地和数据变量具有当前值,在请求或收集运行之后不会持续存在。

修复未解决的变量

解析的变量是未在可用于使用它的请求的活动范围(环境、集合或全局变量)中定义的变量。

例如,对于 request https://postman-echo.com/get?customer_id={{cust_id}},Postman 希望能够{{cust_id}}在请求使用的环境中、在保存请求的集合中或在全局级别找到定义。因此,如果 Postman 在其中一个范围内没有找到定义{{cust_id}},则会将该变量标记为未解析。如果您发送包含未解析变量的请求,该请求可能会失败。

由于以下几个原因,变量可能无法解析:

  • 该变量不存在于请求的活动范围内
  • 变量已创建,但未保存更改
  • 变量所在的环境未激活
  • 变量在活动环境中被关闭

当您处理 API 请求时,Postman 会在URL 构建器Params选项卡、Authorization选项卡和Headers选项卡中突出显示未解析的变量。Postman 以红色突出显示未解析的变量文本。要查看有关错误的更多详细信息以及如何解决它,请将鼠标悬停在未解决的变量上。

未解决的变量

要检查变量是否可用并且在请求的范围内:

  1. 选择集合全局链接之一。要打开环境,请使用 **select an environment链接。
  2. 打开或对变量的值进行必要的更改。
  3. 选择保存图标 保存以确认您的更改。

如果变量因为不存在而无法解析:

  1. 选择添加新变量
  2. 输入名称,验证变量的,然后从下拉列表中选择适当的范围(全局、集合或环境)。
  3. 选择设置变量
设置一个未解析的变量

在脚本中以编程方式定义的变量根据变量范围以不同方式解析。这意味着未解决的变量也将以不同的方式处理。使用以编程方式设置的局部变量pm.variables.set可能看起来无法解析,因为它们没有被存储并且仅在运行时使用,但如果它们被正确设置和使用,请求仍然会成功运行。以编程方式设置的环境、全局和集合变量将保存以供以后使用,因此如果设置和使用正确,它们将得到解决。根据脚本中未解析变量的使用方式,您可能会收到400 Bad Request来自 API 的错误响应,或者 Postman 可能根本无法发送请求。打开控制台帮助识别脚本中未解决的变量。

下一步

有关如何管理和共享可变数据集的概述,请参阅管理环境。查看Intro to scripts了解更多关于在请求脚本中使用变量的信息,查看对集合中的请求进行分组了解更多关于如何在请求之间使用数据的信息。