如何在 Apifox 中设置全局 parameter(随每个请求发送 Auth header)

接口太多,手动配置Auth Header太麻烦?本文教你如何在Apifox中设置全局参数与环境变量,一次配置自动应用到所有请求,彻底告别重复劳动与401错误!

用 Apifox,节省研发团队的每一分钟

如何在 Apifox 中设置全局 parameter(随每个请求发送 Auth header)

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

假设你的项目中有 40 个接口,每个接口在调用时都需要相同的 Authorization: Bearer ... header 和 X-Api-Version header。手动为每个请求添加这两行内容不仅效率低下,而且容易出错。可能某个接口配置了 Token,而另一个接口却被遗漏了,结果你得花上一下午的时间去排查一个只在 40 个接口中的 3 个接口上出现的 401 错误。

还有更好的方法。Apifox 允许你只定义一次 parameter,并自动应用到每个请求中。在项目层级设置 header,将你的 Token 引用为变量,每个接口就会自动继承它,无需你手动修改任何一个请求。本指南将介绍实现这一目标的三个核心功能:全局 parameter、环境变量和目录范围的脚本回退。完成本指南后,你将拥有一套可运行的配置,能够为所有请求自动附加 auth header 和版本 header,并学会如何验证 header 是否已成功发送。如果你想先深入了解变量的背景知识,我们的 Apifox 变量掌握指南将是本文的极佳搭配。

让每个请求都携带标准 header 的想法并非 Apifox 独创。这与 MDN HTTP headers reference 中描述的模式相同:即随每个请求一起发送的一组少量的键值对。Apifox 的作用就是让你只需设置一次这组键值对。

什么是“全局 parameter”

Apifox 中的全局 parameter 是一种适用于整个项目而非单个接口的请求 parameter。你定义它一次,Apifox 就会自动将其附加到符合条件的请求中。

全局 parameter 涵盖四个位置,这也是该功能的核心所在:

  • Headers(请求 Header):用于 AuthorizationX-Api-Version 等内容。
  • Cookies(Cookie 信息):用于会话 Cookie。
  • Query(URL query 参数):用于附加到每个 URL 末尾的类似 ?api_key= 的值。
  • Body(请求 body parameter):用于每个请求 body 都应携带的字段。

对于 auth-header 的使用场景,你需要选择 Headers。如果你的标准值存在于 cookie、query 字符串或 body 字段中,其他三项的工作方式也是相同的。

在开始之前,需要注意一条规则:全局 parameter 的优先级低于接口层级定义的 parameter。如果某个特定请求已经设置了自己的 Authorization header,则该接口层级的值优先,全局设置将被忽略。可以将全局 parameter 视为接口未进行自定义设置时的默认填充值,而不是强制覆盖所有内容的硬性重写。正是这种优先级机制,使得在大型项目中安全地启用全局设置成为可能。

为每个请求设置全局 header

以下是核心操作指南。目标是:在不修改任何项目接口的前提下,将 AuthorizationX-Api-Version 附加到项目中的每一个接口

步骤 1:打开环境管理

全局 parameter 存在于环境管理中,你可以从页面右上角打开它。这是适用于整个项目的 parameter 的入口,Apifox 文档将其描述为随每个请求发送的数值的归宿。打开它,你将看到按位置添加 parameter 的各个区域。

步骤 2:选择 header 位置

选择 header(即请求 header 位置),因为你要添加的是一个 auth header。如果你的标准值是 cookie、query 参数body 字段,你只需相应地选择 Cookies、Query 或 body 即可。这四者的操作机制完全相同。

步骤 3:填写 parameter 详情

每个全局 parameter 都有一组固定的属性。为你的第一个 header 填写这些属性:

  • 名称: Authorization
  • 类型: parameter 类型(对于 header 值,选择 string 类型)。
  • 默认值: Bearer {{token}}(关于 {{token}} 部分的更多信息见下文)。
  • 描述: 简短的说明,例如 “适用于所有已认证接口的 Bearer Token。”

必填的 parameter 上还会显示 Default 字段和必填标记(星号 *)。以同样的方式添加第二行,用于版本 header

  • 名称: X-Api-Version
  • 类型: string
  • 默认值: 2024-08-01
  • 描述: “固定用于每个请求的 API 版本。”

步骤 4:启用该 parameter

每个 parameter 右侧都有一个启用/禁用开关。打开它即可激活该 parameter。这个开关在以后非常实用:如果你需要在调试过程中临时停用某个全局 header,只需在此处将其禁用,而无需将其删除并重新输入。

步骤 5:保存

保存配置。现在,这两个 header 已成为全局配置。除非特定的接口覆盖了其中某一个,否则项目中的每个请求都将携带 AuthorizationX-Api-Version

步骤 6:验证它是否确实已发送

不要只是盲目相信它已经生效,我们需要进行验证。发送项目中的任意请求,然后打开响应控制台中的 实际请求(Actual Request)标签页。该标签页会展示完全真实的发送请求,其中变量已被替换为其真实值。你应该能看到列表中包含这两个 header

GET /v1/orders/8842 HTTP/1.1
Host: api.yourservice.com
Authorization: Bearer sk_live_7f3a9c2e1b8d4056
X-Api-Version: 2024-08-01

如果这两个 header 出现在“实际请求”中,就说明它们已成功通过网络发送。这是整个配置过程中最实用的一环,因为它把“我觉得它已经应用了”变成了“我能看到它确实应用了”。

避免在 header 中直接暴露敏感信息:使用变量

请注意,上方的默认值是 Bearer {{token}},而不是 Bearer sk_live_7f3a9c2e1b8d4056。这种双大括号语法引用了一个变量,而不是将原始 Token 硬编码到 parameter 中。Bearer 方案本身在 RFC 6750 中定义,而 MDN Authorization header 参考指南则介绍了服务端如何读取它。Apifox 文档明确指出了安全方面的问题:对于 auth Token 和 API key 等敏感数据,应使用环境变量,而不是将原始值作为明文默认值存储。变量是一个动态占位符,用于在多个请求和脚本中复用值,它能避免在 parameter 定义中暴露机密信息。

以下是设置 token 变量的方法:

  1. 点击右上角的环境图标( 图标)。请注意,这与“环境管理”是不同的入口: 图标是变量所在的位置。
  2. 找到 全局变量 部分。
  3. 创建一个变量,例如 token,其值为您的 bearer 密钥。
  4. 点击 保存

现在,您的全局 header 值 Bearer {{token}} 在发送时会解析为 Bearer <your-real-secret>,您可以在“实际请求”标签页中确认这一替换结果。鼠标悬停在任何地方的变量名上,都会显示其本地值和作用域,这是快速检查是否引用了正确变量的方法。

这种搭配是推荐的模式:全局 parameter 占用 header 位置,而 变量 负责保存密钥。我们关于 API 客户端环境和密钥管理的深入探讨,进一步介绍了如何避免在可能共享或提交的内容中泄露 Token。

根据环境切换值

当你有多个变量时,它们会变得更加有用。实际项目在开发、测试和生产阶段会请求不同的服务端,每个服务端通常需要不同的 Token。将每组变量分类到各自的环境下,然后通过 图标旁边的 环境下拉菜单 进行切换(例如,一个示例环境可能命名为 Local Mock)。切换环境会将您的请求指向不同的一组服务端,并自动替换为该环境的变量值。您的全局 Bearer {{token}} header 保持不变;只有解析后的密钥会随着环境的变化而改变。如果您在此基础上构建 auth 流程,我们鉴权组件指南中的概念将解释 bearer、API-key 和 OAuth 定义如何映射到实际请求中。

当您只想在单个目录下使用 header 时

全局 parameter 会影响整个项目。有时这范围太广了。例如,如果只有您的 /admin 接口需要 X-Admin-Scope header,而项目的其他部分不需要携带它。

这是一个坦率的限制:Apifox 在目录设置中没有原生的“添加 header”字段。没有目录级的 header UI 可以填写。文档中所描述的替代方案是使用目录级的前置操作脚本,这样该目录下的每个请求都会继承该 header。该脚本使用与 Postman 兼容的 pm.* 脚本编写方式:

pm.request.headers.add({ key: 'X-Admin-Scope', value: 'full' });

将其添加为目录上的前置操作脚本,该目录中的每个请求都会自动带上该 header,而目录之外的请求则不会。这是一个脚本,而不是设置开关,因此请将其视为针对目录范围需求的备用方案,而不是首选路径。要了解此脚本所依赖的更广泛的脚本模型,请参阅我们的 Apifox 前置操作和后置操作脚本指南。

如何选择,以及何时使用

现在你有了三种无需编辑接口即可添加 header 的方法。请根据作用域进行选择:

  • 全局参数 (Headers)(通过环境管理):该 header 适用于整个项目。这是共享 auth header 或版本 header 的默认选择。
  • 环境变量 ({{token}}):将其与全局参数配合使用,这样 header 插槽是全局的,而敏感数据则被安全地存储,并随环境的不同而切换。
  • 目录级前置操作脚本 (pm.request.headers.add):该 header 仅适用于单个目录。当项目范围过大时,可以使用此方法。

有几点需要注意。检查是否有重复的参数名称,以免两个全局 header 发生冲突,并确保每个参数的类型(Type)与其使用方式相匹配。此外,请记住优先级规则:设置了自身 Authorization 的接口会覆盖全局的 Authorization。当某条路由需要不同的 Token 时,这算是一个特性,但如果你忘记了该路由有自己的值,这可能会让你感到意外。这三个功能在文档中都没有任何方案限制,因此你无需购买特定档位即可使用它们。

使用 Apifox CLI 自动执行工作流

全局参数和环境不仅仅是为了 GUI 操作方便,它们也会应用到自动化运行中。当你在 Apifox 中构建保存的测试场景并从命令行运行它时,该运行会继承你通过 ID 传入的环境,因此在 GUI 中生效的同一个 Bearer {{token}} header 和 X-Api-Version 值在 CI 中也会以相同的方式进行解析。

安装 CLI (Node.js v16+) 并进行身份验证:

npm install -g apifox-cli
apifox login --with-token <YOUR_ACCESS_TOKEN>

然后针对特定环境运行保存的测试场景:

npm install -g apifox-cli
apifox login --with-token <YOUR_ACCESS_TOKEN>

-e 标志用于选择环境,因此测试场景会获取该环境的变量,包括您的 Token。-t 标志是测试场景 ID,而 -r 是 reporter(clihtmljunit)。这就是关联所在:只需定义一次 header 和变量,通过 CLI 运行的每个测试场景都会携带它们。有关设置和 Token 的详细信息,请参阅 Apifox CLI 安装指南;要将运行流程接入自动化,我们的 GitHub Actions 中的 Apifox CLI 教程展示了完整的流水线。

常见问题

全局 parameter 会覆盖我在特定接口上设置的 header 吗?

不会。全局 parameter 的优先级低于接口级 parameter。如果请求定义了自己的 Authorization header,则该值优先,并且在该请求中会忽略全局值。全局值作为项目默认值,在接口未设置自身值时进行填充。

我应该将实际的 Token 存储在哪里,以避免它以明文形式存在?

使用环境变量或全局变量,而不是原始的默认值。将全局 header 设置为 Bearer {{token}},并将真实的密钥保存在通过 环境图标创建的变量中。文档建议对敏感数据使用变量或安全方法,正是为了避免将 Token 内联存储。我们关于使用 JSONPath 提取变量的指南介绍了如何从登录响应中捕获 Token 并以相同的方式复用它。

如何确认全局 header 确实已发送?

发送任意请求,然后打开响应控制台中的 Actual Request 标签页。它会显示实际发送的请求,其中 {{token}} 和其他变量已被替换为它们的值。如果你的 header 出现在那里,说明它已经通过网络发送出去了。

我可以只为单个目录添加默认 header,而不是整个项目吗?

可以,但不能通过设置字段来完成,因为 Apifox 没有原生的目录 header UI。使用 pm.request.headers.add({ key, value }) 在目录上添加一个前置脚本,这样该目录中的每个请求都会继承该 header,而项目的其他部分则不会。

使用全局 parameter 或环境变量需要付费计划吗?

这些功能的文档没有列出任何版本限制。全局 parameter、环境变量和目录级前置脚本的文档均未提及免费与付费的限制。

总结

在 Apifox 中为每个请求设置 header 是一项一次性的工作:在环境管理中将 header 定义为全局 parameter,将密钥引用为 {{token}} 变量以避免明文泄露,并通过 Actual Request 标签页确认其已发送。当您只需要在单个目录上使用 header 时,可以使用前置脚本作为替代方案。要在您自己的项目中体验,请下载 Apifox 并设置您的第一个全局 header。它是免费的,无需信用卡。

开发必备:API 全流程管理神器 Apifox

介绍完上文的内容,我想额外介绍一个对开发者同样重要的效率工具 —— Apifox。作为一个集 API 文档、调试、设计、测试、Mock、自动化测试于一体的工具,Apifox 是目前提升研发效率的首选。

如果你正在开发项目,不妨试试其极其友好的界面设计,它完全兼容 Postman 和 Swagger 数据格式,导入数据非常方便,,即使是新手也能很快上手,点击这里即可注册使用

Apifox

值得一提的是,除了个人和常规团队使用,针对有高安全合规要求、或需要在内网环境协作的企业,Apifox 还提供了深度定制的私有化部署方案

获取专属报价与部署方案

icon 详细的私有化部署系统架构与安全白皮书
icon 针对您公司规模的专属报价单
icon 免费的 1v1 专属产品演示 (Demo) 机会
获取部署方案
* 提交后,我们的客户经理将在 1 个工作日内与您联系
林俊锋 企业微信
@Apifox 专属顾问
扫码备注: 私有化 + 公司名