Apifox 帮助文档
帮助文档常见问题Apifox 官网私有化部署
开发者中心
  • 开放 API
  • 更新日志
  • Road Map
  • Apifox Markdown
下载
  • 下载 Apifox
  • 下载 IDEA 插件
  • 下载浏览器扩展
  • Apifox Web 版
帮助文档常见问题Apifox 官网私有化部署
开发者中心
  • 开放 API
  • 更新日志
  • Road Map
  • Apifox Markdown
下载
  • 下载 Apifox
  • 下载 IDEA 插件
  • 下载浏览器扩展
  • Apifox Web 版
  1. 环境和变量
  • 帮助中心
  • 更新日志
  • 入门
    • 产品介绍
    • 联系我们
    • 私有化部署
  • 开始使用
    • 下载 Apifox
    • 注册与登录
    • 页面布局
    • 基本概念
    • 快速上手
      • 概述
      • 新建接口
      • 发送接口请求
      • 快捷请求
      • 添加断言
      • 新建测试场景
      • 分享 API 文档
      • 了解更多
    • 基础知识
      • 接口基本信息
        • 请求 URL 与方法
        • 请求参数与请求体
        • 请求头
        • 请求参数编码解码
        • HTTP/2
      • 认证与授权
        • 概述
        • 支持的授权类型
        • Digest Auth
        • OAuth 1.0
        • OAuth 2.0
        • Hawk Authentication
        • Kerberos
        • NTLM
        • Akamai EdgeGrid
        • CA 和客户端证书
      • 响应与 Cookie
        • 概述
        • API 响应
        • 创建和发送 Cookie
        • 实际请求
        • 提取响应示例
      • 请求代理
        • 网页端中的请求代理
        • 分享文档中的请求代理
        • 客户端中的请求代理
      • API Hub
        • API Hub
    • 导入导出数据
      • 概述
      • 手动导入
      • 定时导入
      • 导入设置
      • 导出数据
      • 其它方式导入
        • 导入 OpenAPI/Swagger
        • 导入 Postman
        • 导入 Apipost
        • 导入 Eolink
        • 导入 cURL
        • 导入 Markdown
        • 导入 Insomnia
        • 导入 apiDoc
        • 导入 .har 文件
        • 导入 knife4j
        • 导入 NEI
        • 导入小幺鸡(docway)
        • 导入 Apizza
        • 导入 WSDL
  • 设计 API
    • 概述
    • 新建 API 项目
    • 接口基础知识
    • 请求体多示例配置
    • 响应组件
    • 常用字段
    • 全局参数
    • 历史记录
    • 批量管理
    • 数据模型
      • 概述
      • 新建数据模型
      • 构建数据模型
      • 通过 JSON 等生成
      • 高级数据类型
    • 鉴权组件
      • 概述
      • 创建鉴权组件
      • 使用鉴权组件
      • 在线文档中的鉴权组件
    • 高级功能
      • 接口字段
      • 接口状态
      • 关联测试场景
      • 参数列表外观
      • 接口唯一标识
  • 开发和调试 API
    • 概述
    • 生成请求
    • 发送请求
    • 请求历史
    • 接口用例
    • 动态值
    • 校验响应
    • 文档模式/调试模式
    • 生成代码
    • 环境和变量
      • 概述
      • 全局/环境/临时变量
      • 环境与服务
      • Vault Secrets(密钥库)
        • 功能简介
    • 前后置操作&脚本
      • 概述
      • 断言
      • 提取变量
      • 等待时间
      • 数据库操作
        • 概述
        • MongoDB
        • Redis
        • Oracle
      • 使用脚本
        • 概述
        • 前置脚本
        • 后置脚本
        • 公共脚本
        • pm 脚本 API
        • 使用 JS 类库
        • 响应数据可视化
        • 调用外部程序
      • 脚本示例
        • 断言示例
        • 脚本使用变量
        • 脚本读取/修改接口请求信息
      • 常见问题
        • 如何获取动态参数的真实值并加密?
        • 脚本运行后,提取的数字(bigint)精度丢失应该如何处理?
    • API 调试
      • GraphQL 调试
      • WebSocket 调试
      • Socket.IO 调试
      • SSE 调试
      • SOAP/WebService
      • gRPC 调试
      • 使用请求代理调试
      • Dubbo 调试
        • 新建 Dubbo 接口
        • 调试 Dubbo 接口
        • Dubbo 接口文档
      • TCP(Socket)
        • Socket 接口功能简介
        • 报文数据处理器
  • Mock 数据
    • 概述
    • 智能 Mock
    • 自定义 Mock
    • Mock 优先级
    • Mock 脚本
    • 云端 Mock
    • 自托管 Runner Mock
  • 自动化测试
    • 概述
    • 编排测试场景
      • 新建测试场景
      • 测试步骤间传递数据
      • 测试流程控制条件
      • 从接口/用例同步数据
      • 跨项目导入接口/用例
      • 导出测试场景数据
    • 运行测试场景
      • 运行测试场景
      • 批量运行测试场景
      • 数据驱动测试
      • 定时任务
      • 管理其它项目接口的运行环境
    • 测试报告
      • 测试报告
    • API 测试
      • 集成测试
      • 性能测试
      • 端到端测试
      • 回归测试
    • Apifox CLI
      • 概述
      • 安装和运行 CLI
      • CLI 命令选项
    • CI/CD
      • 概述
      • 与 Jenkins 集成
      • 与 Gitlab 集成
      • 与 Github Actions 集成
      • 与其它更多 CI/CD 平台集成
  • 发布 API 文档
    • 概述
    • 快捷分享
    • 查看 API 文档
    • 发布文档站
    • 页面布局设置
    • 自定义域名
    • AI 相关特性
    • 高级设置
      • 文档站搜索设置
      • 跨域代理
      • 文档站接入 Google Analytics
      • SEO 设置
      • 文档左侧目录设置
      • 文档可见性设置
      • 在线 URL 链接规范
    • API 版本
      • 创建 API 版本
      • 发布 API 版本
      • 快捷分享 API 版本
      • 功能简介
  • 迭代分支
    • 功能简介
    • 新建迭代分支
    • 在迭代分支中改动 API
    • 在迭代分支中测试 API
    • 合并迭代分支
    • 管理迭代分支
  • 管理中心
    • 入驻清单
      • 了解基本概念
      • 团队入驻
    • 管理团队
      • 团队基本操作
      • 团队成员管理
      • 成员角色与权限设置
      • 团队资源
        • 通用 Runner
        • 请求代理 Agent
        • 团队变量
      • 实时协作
        • 团队协作
    • 管理项目
      • 项目基本操作
      • 项目成员管理
      • 通知设置
        • 功能简介
        • 通知对象
        • 通知事件
      • 项目资源
        • 数据库连接
    • 管理组织
      • 单点登录(SSO)
        • 功能简介
        • 为组织配置单点登录
        • 管理用户账号
        • 将组映射到团队
        • Microsoft Entra ID
      • SCIM 用户管理
        • 功能简介
        • Microsoft Entra ID
      • 组织资源
        • 自托管 Runner
  • IDEA 插件
    • 快速上手
    • 生成接口文档
    • 生成数据模型
    • 配置
      • 全局配置
      • 项目内配置
      • 可配置规则
      • 脚本工具
      • Groovy 本地扩展
    • 进阶配置
      • 注释规范说明
      • 框架支持
    • 常见问题
      • 常见问题
  • 浏览器扩展
    • Chrome
    • Microsoft Edge
  • Apifox MCP Server
    • 概述
    • 通过 MCP 使用 Apifox 项目内的 API 文档
    • 通过 MCP 使用公开发布的 API 文档
    • 通过 MCP 使用 OpenAPI/Swagger文档
  • 最佳实践
    • 概述
    • 接口之间如何传递数据
    • 登录态(Auth)如何处理
    • 接口签名如何处理
    • 如何加密/解密接口数据
    • Jenkins 定时触发任务
    • 如何计算 AI 问答成本
    • 与其他成员共用数据库连接配置
    • 通过 CLI 运行包含云端数据库连接配置的测试场景
    • 通过 Runner 运行包含云端数据库连接配置的测试场景
  • 账号&应用设置
    • 账号设置
    • API 访问令牌
    • 语言设置
    • 快捷键
    • 网络代理
    • 数据备份与恢复
    • 更新 Apifox
    • 实验性功能
  • 身份验证 & Auth 鉴权指南
    • 什么是 API Key
    • 什么是 Bearer Token
    • 什么是 JWT
    • 什么是 Basic Auth
    • 什么是 Digest Auth
    • 什么是 OAuth 1.0
    • 什么是 OAuth 2.0
      • 什么是 OAuth 2.0
      • 授权码授权类型
      • 授权码授权类型,带有 PKCE
      • 隐式授权类型
      • 密码凭证授权类型
      • 客户端凭证授权类型
  • 服务与隐私协议
    • 服务协议
    • 隐私协议
    • 服务等级协议
  • 参考资料
    • API 设计优先理念
    • JSON Schema 介绍
    • JSONPath 介绍
    • XPath 介绍
    • Apifox Markdown 语法
    • CSV 格式规范
    • 正则表达式
    • 安装 Java 环境
    • Runner 运行环境
    • 常见编程语言对应的数据类型
    • Socket 粘包和分包问题
    • 词汇表
    • 目录链接汇总
    • Apifox Swagger 扩展
      • 概述
      • x-apifox-folder
      • x-apifox-status
      • x-apifox-name
      • x-apifox-maintainer
    • Apifox JSON Schema 扩展
      • 概述
      • x-apifox-mock
      • x-apifox-orders
      • x-apifox-enum
    • 动态值表达式
  • 常见问题
  1. 环境和变量

全局/环境/临时变量

在 Apifox 中,变量可以让你方便地保存和复用各种值。将某个值设置为变量后,可以在不同的环境、接口、脚本以及测试场景中灵活使用。借助变量,不仅能提升工作效率,还能促进团队协作。

什么是变量#

变量是数据的符号化表示,让你在需要某个值时无需重复手动输入。这种方式非常适合在多个地方重复使用相同的值。
例如,如果多个接口使用同一个 token,而该 token 可能会变化,你可以将其存储为一个名为 {{my_token}} 的变量。在接口参数中,直接引用 {{my_token}} 即可。当 token 发生变化时,只需更新变量值,所有引用该变量的地方都会自动同步更新。
image.png
这一概念适用于接口中的任何重复数据。在发送请求时,所有引用变量的地方都会被替换为其存储的值。变量可用于参数值、请求体、URL 或请求头中,灵活地满足不同需求。
在 Apifox 的 自动化测试 模块中,变量可以用来在测试步骤间传递数据。

变量类型#

Apifox 支持多种类型的变量,帮助你根据开发、测试和协作需求灵活调整流程。每种变量类型都对应接口请求的不同上下文,并具有特定的用途。
这些变量类型依次为:全局变量、环境变量、测试数据变量和临时变量。

全局变量#

全局变量 允许在项目内的所有接口、脚本和环境之间共享数据,它们在整个项目乃至团队中都可以访问,可以在环境管理页中的左上方进行设置。有两种类型的全局变量,对应不同的使用范围:
项目中共享的全局变量
可以在整个项目内进行共享与使用。适用于项目内的接口间的变量流转需求,例如登录接口提取 token 到项目全局变量中,再给后续业务接口作为鉴权使用。
image.png
团队中共享的全局变量
可以在整个团队内进行共享与使用,可以在团队内的项目间流转变量数据。适用于项目与项目之间的变量流转需求,例如登录接口属于登录项目中,财务接口属于财务项目中,通过使用团队全局变量来让登录项目中获取的 token 给财务项目中的接口作为鉴权使用 (常见的微服务场景)。
image.png
💡
1.
在项目的环境管理页面中,仅能查看已有的团队全局变量,以及修改这些已有变量的本地值,不可以添加、删除团队全局变量和修改现有变量的变量名与远程值。
2.
在运行接口时,通过使用前后置操作提取、设置变量到团队全局变量,仅能修改已有变量的本地值,不可以添加、删除团队全局变量和修改现有变量的变量名与远程值。
3.
如想进行此类操作,需要拥有团队管理员权限并在“团队资源 -> 团队变量”页中进行操作。

环境变量#

环境变量 使你能够根据特定环境 (如本地开发、测试或生产环境) 调整工作配置。切换环境时,当前环境的环境变量值将生效。每次只能激活一个环境。

测试数据变量#

测试数据变量 来自外部的 CSV 或 JSON 文件,用于在测试场景或 Apifox CLI 中定义数据集。其值是临时的,接口或集合运行结束后将不再保留。

临时变量#

临时变量 仅在单个接口或测试场景的运行期间有效,运行结束后会消失。它适用于临时覆盖其他类型的变量,并且不会在执行后保留值。

变量优先级#

当不同类型的变量具有相同名称时,变量的生效优先级为:团队全局变量 < 项目全局变量 < 环境变量 < 测试数据变量 < 临时变量。
例如,如果定义了一个名为 id 的全局变量和一个同名的临时变量,执行接口时将使用临时变量的值。
Apifox 中的变量以字符串形式存储。当存储对象或数组时,需要使用 JSON.stringify() 转换为字符串,读取时则使用 JSON.parse() 进行解析。

远程值和本地值#

每个变量都有一个远程值和一个本地值。
远程值 是在变量的参数(环境或全局)中设置的值。该值会与 Apifox 的服务器同步,并在你分享该参数时与团队成员共享。设置远程值有助于团队协作,但需要注意,远程值中的数据可能会被团队内的其他人访问,因此可能公开。
本地值 是在发送接口请求时使用的值。它不会与 Apifox 服务器同步,也不会保存在共享的 API 文档、环境或全局变量中。
image.png
本地值仅保存在本地,适合存储密码、token 等敏感数据。这些数据不会与其他团队成员同步,每个人可以安全地独立使用自己的本地值。
如果不需要使用个人的本地值,可以将其留空,这样本地值会与远程值保持一致。然而,一旦在本地值字段中输入了值,变量将不再使用远程值。
你还可以点击本地值旁边的链接图标 🔗,将当前值重新绑定到远程值。
由于 本地值 仅存储在本地,使用清理软件清除 Apifox 文件缓存时,可能会导致 本地值 被删除,请谨慎操作。
更换设备时,本地值 不会随账号自动迁移。你可以通过导出和导入环境功能来迁移本地值。
如果使用 Apifox Web 版,本地值 存储在浏览器的数据中。

在 Apifox CLI 中使用变量#

在 Apifox 客户端设置好自动化测试的测试场景后,你可以在任何机器上使用 Apifox CLI 运行该场景。
需要注意的是,在客户端运行时使用的是变量的 本地值,而在 CLI 中运行时使用的是变量的 远程值。如果客户端和 CLI 的运行结果不同或出现错误,通常是由于这一差异导致的。
了解更多关于 Apifox CLI 的信息。

定义变量#

定义变量的方法有多种,具体取决于变量值的来源。你可以在右上角的 “环境管理” 弹窗中预设变量值,也可以通过前置/后置操作中的 “提取变量” 或 “执行数据库操作” 来设置变量值,此外,还可以通过 “自定义脚本” 设置变量。

在环境管理中预设变量值#

你可以在 “环境管理” 弹窗中预设全局变量和环境变量的值,步骤如下:
1
点击界面右上角的 “环境管理” 按钮 ≡
2
切换到 “全局变量” 或特定环境
3
添加变量名、远程值和本地值
4
点击保存
变量的远程值只能在 “环境管理” 中设置。使用脚本时,只能设置变量的本地值而不能设置远程值。

添加“提取变量”操作#

Apifox 支持可视化提取接口响应中的值并保存为变量。步骤如下:
1
在运行标签页(文档模式)或请求标签页(调试模式)中,导航到后置操作
2
光标悬停在 “添加后置操作” 上并选择 “提取变量”
image.png
3
输入变量名并选择变量类型。
选择提取来源,如响应 JSON、响应 XML 或响应文本等。
4
如果响应是 JSON/XML 格式,你可以使用 JSONPath/XPath 语法解析响应 JSON/XML 的特定部分,并将其保存为变量值。
image.png
5
发送请求后,变量提取会被执行,你可以在控制台查看日志。
image.png
了解更多关于提取变量的信息。

在脚本中设置变量#

你可以在前置/后置请求脚本中以编程方式设置变量。需要通过 set 方法设置变量。以下是示例代码:
以下是更多关于 set 的语法:
1.
环境变量
环境变量支持数组、对象、字符串等形式存储,你可以参考以下代码将对象或数组 (非字符串) 写入环境变量。
读取的时候,需要使用 JSON.parse 逆转换。
2.
全局变量
项目中共享的全局变量
团队中共享的全局变量
3.
临时变量
📌
了解更多关于脚本语法的信息。

从数据库获取变量值#

Apifox 提供了一个特殊功能:连接数据库获取数据,将其设置为变量,并在接口中使用。步骤如下:
1
在运行标签页(文档模式)或请求标签页(调试模式)中,导航到后置操作。
2
悬停在 “添加后置操作” 上并选择 “数据库操作”。
image.png
3
为数据库操作命名并设置数据库连接。
image.png
4
输入 SQL 命令。命令中支持使用变量,如 {{variables}}。
5
设置 “提取结果到变量”,支持使用 JSONPath,开启 “控制台打印结果” 开关。
6
点击发送请求,你可以在控制台查看数据库操作的结果。
image.png
了解更多关于数据库操作的信息。

使用变量#

在 Apifox 中,你可以通过双大括号引用项目中的变量。例如,要在接口的认证设置中引用名为 my_token 的变量,只需将变量名用双大括号包裹,如:{{my_token}}。
当你运行接口时,Apifox 会解析该变量并用其当前值进行替换。
image.png
例如,在引用了变量的请求 URL 中:
http://127.0.0.1/pet/findByStatus?status={{CurrentStatus}}
运行请求时,Apifox 会使用 CurrentStatus 变量的存储值。如果 CurrentStatus 的值是 "available",发送的请求 URL 会包含查询参数:
http://127.0.0.1/pet/findByStatus?status=available
你可以在 “实际请求” 标签中查看组装后的请求。
image.png
在请求体中引用变量时,可以像这样:
{ 
    "status" : "{{CurrentStatus}}"
    "quantity" : {{TotalPet}}
}
在 JSON 格式中使用字符串类型的变量时,需要加上双引号。对于其他类型的变量,则无需加双引号,如上例所示。
双大括号有时可能会触发 JSON 格式错误的警告,但这些警告可以忽略。
变量可以在请求 URL、参数、请求头、认证设置、请求体等地方使用。
有时,你可能会看到 “未解析的变量” 提示,这表示该变量在环境或全局变量中未定义。但这并不一定是问题的根源。如果你是在后置操作中提取变量或使用脚本设置变量,可能在请求运行前还未获取到其值。如果是临时变量,它们在执行后会过期,这也可能导致变量值不可用。为了确认是否存在问题,你可以先发送请求进行验证。
image.png

访问变量的子元素值#

如果变量的值是对象或数组形式,可以通过 {{变量名.属性名}} 或 {{变量名[0].属性名}} 读取变量中的字段值。例如:
1.
对象变量 user 如下:
在接口参数中,可以用 {{user.name}} 引用 user 对象的 name 字段
在自定义脚本中,可以用 pm.variables.get("user.name") 引用 user 对象中的 name 字段
2.
数组变量 user 如下:
在接口参数中,可以用 {{user[0].name}} 引用 user 数组第一个元素的 name 字段
在自定义脚本中,可以用 pm.variables.get("user[0].name") 引用 user 数组第一个元素的 name 字段
使用 {{user.name}} 这样的方式读取变量(对象或数组)中的字段值遵循 JSONPath 语法规范。你可以用变量名替换 JSONPath 中的 $ 符号。
💡
查看JSONPath的详细信息。

在脚本中使用变量#

在脚本中使用变量时,不能直接使用 {{变量}} 语法。需要先通过 get 方法将变量值赋给一个新的变量。以下是示例代码:
以下是更多关于 get 的语法:
1.
环境变量
环境变量支持数组、对象、字符串等形式存储,你可以参考以下代码将对象或数组 (非字符串) 写入环境变量。
读取的时候,需要使用 JSON.parse 逆转换。
2.
全局变量
项目中共享的全局变量
团队中共享的全局变量
3.
临时变量

打印变量值#

在发送请求时,你可以把变量值打印到 Apifox 控制台。
要在脚本中打印变量值,使用以下语法:
点击响应区域的控制台标签可以查看打印的结果。

使用测试数据变量#

在 Apifox 中,如果需要发送多组数据作为请求参数,可以使用 “测试数据变量” 功能。在自动化测试场景中,你可以导入 CSV 或 JSON 格式的数据,并通过 {{变量名}} 引用这些数据变量,其中变量名对应 CSV 中的列名。
选择测试场景中的数据集后,运行时 {{变量}} 会被替换为实际数据。每行数据对应一次请求执行,测试报告中将显示每次运行的请求和响应。
image.png
更多信息请参考数据驱动测试指南。

常见问题#

我可以在 Mock 中引用变量吗?在哪些场景可以使用变量?
变量只有在发送请求时才会被转换为实际值。因此,变量可以在某些场景中使用,但在其他场景中则无法使用。
可以使用变量的场景包括:
接口:可以直接在接口的请求参数、请求体、路径和 Auth 等地方使用 {{变量}}。
前置和后置脚本:在这些脚本中,使用 pm.environment.get("变量名") 或类似语句引用变量,但不能直接使用 {{变量}}。
测试场景:由于测试场景中的请求会被发送,因此使用方式与接口和脚本相同,可以在请求中使用 {{变量}}。
不能使用变量的场景包括:
接口文档:请求的默认值、响应的默认值以及 Mock 数据中都不能使用变量。
Mock:高级 Mock 和 Mock 脚本不支持使用变量。
不要将一个变量的值设置为另一个变量,这可能导致变量值无法正确解析。
关键点在于,变量只有在实际发送请求时才会被解析。因此,变量不能用于接口文档的静态部分或 Mock 场景,因为这些场景并不涉及请求的发送。
上一页
概述
下一页
环境与服务
Built with