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 运行包含云端数据库连接配置的测试场景
  • 账号&应用设置
    • 账号设置
    • 语言设置
    • 网络代理
    • 快捷键
    • 数据备份与恢复
    • 更新 Apifox
    • API 访问令牌
  • 身份验证 & 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 作为一款接口文档+调试+mock+测试的协同工具,其中有一个备受好评的功能就是在发送/接收请求时,支持数据库操作。这个功能极大的方便了大家在请求接口时需要制作请求数据,或在接收到接口响应时需要插入数据到数据库中的操作,从而深得用户喜爱。
但是在大量用户每天大量实际使用这个功能的过程中,也发现了一些可优化点。其中最容易被 cue 到的一条是:
数据库连接的配置能不能团队管理员配置好了之后,其他人可以协同使用啊?每个人都要重新写一遍连接信息真的挺麻烦的。
在这个功能设计之初,我们便考虑到了是否允许数据库配置能够协同使用的问题。但是允许用户将数据库的账号、密码等敏感信息保存在云服务器上,是要慎重考量的事情。所以,数据安全是当时没有做协同使用数据库连接配置功能的核心原因。

云端储存数据库连接配置#

到了如今,Apifox 已经是上百万开发者的主要 API 协同管理工具了,同时 Apifox 本身自己的基础能力也迭代的更加强大。因此,我们重新考虑了协同使用数据库连接配置这个优化需求,尽量做到数据安全与高效使用的平衡,期望让用户们能够满意。
1
当你的 Apifox 版本更新至2.6.50及以上,进入项目设置 -> 数据库连接,点击新建数据库连接时,即可发现所有连接字段会引导你使用变量形式来填入字段的值。
image.png
2
在环境管理中,于环境变量内设置好不同环境下需要使用的数据库连接的变量,这样即可将这些变量应用在数据库连接配置中。
image.png
3
回到数据库连接配置页,你可以使用变量格式手动填入变量,也可以通过动态值功能直接引用这个变量。我们推荐使用环境变量填入此处,这样可以随着不同环境的上下文,自动切换不同环境对应的配置。除端口号外,其他字段都最好使用变量形式。
image.png
4
将使用变量的数据库连接配置进行保存,就可以在接口管理、自动化测试等地方的数据库操作中进行使用了。
image.png
保存在本地的配置(未使用变量)保存在云端的配置(使用变量)
1. 某个接口请求时,执行到了数据库操作,读取其中指定的数据库配置;

2. 读取数据库配置详情,在本地文件中找到实际值;

3. 使用本地找到的实际值(host, username, password 等)拼接成完整的数据库连接配置,发起连接;

4. 连接成功,执行数据库操作中写的 SQL 以及保存至变量等操作。
1. 某个接口请求时,执行到了数据库操作,读取其中指定的数据库配置;

2. 读取数据库配置详情,在云端读取到使用了变量,根据变量名与变量优先级查找实际值;

3. 进行变量替换,拼接成完整的数据库连接配置,发起连接;

4. 连接成功,执行数据库操作中写的 SQL 以及保存至变量等操作。
5
其他项目成员需要使用这个数据库连接配置的话,现在只用去环境管理中,找到对应的变量并填入本地值即可,不用像以前需要去项目管理中进行配置。
以上,是使用云端数据库连接的具体操作步骤。因为推荐使用本地值,所以实际配置仍然是保存在本地的,无需担心数据安全风险,只是使用变量形式让大家更方便进行了使用。当然 Apifox 仍然支持数据库连接配置中直接填写实际值,用以兼容以前的数据,以及仍然期望使用本地数据的需求。不过会有强提醒告知用户可以转换成使用变量来保存至云端,提升使用体验。
image.png
使用云端数据库连接的注意事项
数据库连接配置中,使用了变量,实际保存在云端的内容为变量名,执行数据库连接时,会根据变量使用规则来拼成完整的连接配置,发起连接。

✅ 建议行为#

变量值使用“本地值”或“Vault 变量”
端口号可直接填写,无需填入变量,方便使用&无风险

❌ 不建议行为#

变量值使用“远程值”
明文与变量混用,导致仍然要每个人在项目设置中单独配置

使用 Vault 变量来保存数据库连接配置#

数据库连接配置,推荐使用 Vault 变量写入配置中。因为 Vault 变量是从外部专业密钥库获取、会被加密存储在你的本地客户端中,所以这样可兼得保存在云端的协同高效率,与数据安全的最佳效果。
Apifox 商业旗舰版可使用 Vault Secrets(密钥库)功能
1
设置 Vault 变量,将数据库连接的明文存入 Vault 变量中。不同环境的数据库连接配置,要在你的提供商中创建不同的 Vault Key。具体方法参考 Vault Secrets(密钥库)。
image.png
2
在不同环境中,都创建相同名称的环境变量,例如:dbHost。然后在远程值中设置引用该环境对应的 Vault 变量,并保持本地值跟随远程值。
image.png
这样做的目的是:
1.
使用环境变量包一层 Vault 变量,让后续设置数据库连接配置时只需要选择环境变量即可,实际使用数据库连接配置时,会跟着环境上下文自动选择此环境的连接配置;
2.
保存在远程值中,为了让项目成员无需再手动设置一次,提升协同使用效率。
3
在数据库连接中,填入在环境管理中设置好的数据库连接变量。可以使用“动态值”功能快速引用变量。
image.png
4
点击测试连接,会提示选择需要测试的环境,注意测试连接的环境里一定要配置好对应的变量实际值。点击确认发现连接成功。如果有问题可根据具体报错信息进行处理。
image.png
5
在某个接口请求的前/后置操作中,添加一个数据库操作,并选中上述已保存在云端的数据库连接配置,发起请求。例如,我需要从数据库表中找到宠物名为“Nancy”的宠物的 id,然后请求接口查询详情。
image.png
6
发现 Apifox 成功执行了数据库操作,在数据库中取出了数据并根据我的要求将 petID 的值保存至 petId 变量中,然后请求出去了。
image.png
7
如果你已按照上述步骤配置好了数据库连接配置,其他项目成员即可直接在接口请求的数据库操作内指定使用此配置,来对数据库进行操作,无需再自己配置。
以上,即是使用 Vault 变量来保存数据库连接配置,并且实际应用的实践。其中关键要点:
把每个环境的数据库连接配置,除端口之外,都设置一个 Vault 变量。例如测试、正式环境分别有 Vault 变量:testDBHost、prodDBHost;
使用环境变量,在每个环境中都添加同名变量,并在这些环境变量的远程值中引用对应环境的 Vault 变量值。例如按照下表方式配置好测试、正式环境两个环境下的变量与具体变量远程值(本地值保持跟随远程值即可):
  环境变量名变量远程值说明
测试环境dbHost{{vault:testDbHost}}引用测试环境数据库地址的 Vault 变量
dbUsername{{vault:testDbUsername}}引用测试环境数据库用户名的 Vault 变量
dbPwd{{vault:testDbPwd}}引用测试环境数据库密码的 Vault 变量
dbTablestore没有数据安全问题,所以直接填写。当然也可选择引用 Vault 变量
正式环境dbHost{{vault:prodDbHost}}引用正式环境数据库地址的 Vault 变量
dbUsername{{vault:prodDbUsername}}引用正式环境数据库用户名的 Vault 变量
dbPwd{{vault:prodDbPwd}}引用正式环境数据库密码的 Vault 变量
dbTablestore没有数据安全问题,所以直接填写。当然也可选择引用 Vault 变量

延伸阅读#

《通过 CLI 运行包含云端数据库连接配置的测试场景》
《通过 Runner 运行包含云端数据库连接配置的测试场景》
上一页
如何计算 AI 问答成本
下一页
通过 CLI 运行包含云端数据库连接配置的测试场景
Built with