Bruno API Client:开源的 Postman 替代方案 (2026)
一款快速、Git 友好的 API client,可在您的文件系统中存储 collections。
开始使用 Hypereal 构建
通过单个 API 访问 Kling、Flux、Sora、Veo 等。免费积分开始,扩展到数百万。
无需信用卡 • 10万+ 开发者 • 企业级服务
Bruno API Client:开源的 Postman 替代方案 (2026)
如果你曾因 Postman 的云同步要求、强制账号登录或定价变更而感到困扰,你并不孤单。Bruno 是一款开源的 API 客户端,它采用了截然不同的方法:你的 API 集合(Collections)作为文件存储在本地文件系统中,而不是存储在别人的云端。
本指南涵盖了 2026 年关于 Bruno 你需要了解的一切——安装、核心功能、与 Postman 的对比,以及为什么团队正在转向它。
为什么会有 Bruno
多年来,Postman 改变了它的模式。曾经简单的桌面应用现在需要云账号,强推团队协作功能,并将许多功能移到了付费层级。对于只想在没有供应商锁定(vendor lock-in)的情况下测试 API 的开发者来说,这令人沮丧。
Bruno 的诞生就是为了解决这些问题。它的核心原则包括:
- 基于文件系统的集合。 你的 API 请求使用 Bru 标记语言以纯文本文件形式存储。无需云端、无需同步、无需账号。
- Git 友好。 由于集合就是文件,你可以将它们与代码一起进行版本控制。
- 离线优先。 Bruno 完全可以在没有互联网连接的情况下工作。
- 开源。 采用 MIT 许可。你可以检查、修改并为代码库做贡献。
安装
Bruno 适用于 macOS、Windows 和 Linux。
桌面应用
# macOS (Homebrew)
brew install bruno
# Windows (Chocolatey)
choco install bruno
# Windows (Scoop)
scoop install bruno
# Linux (Snap)
snap install bruno
# Linux (apt - Debian/Ubuntu)
sudo apt install bruno
或者直接从 usebruno.com 下载安装程序。
Bruno CLI
对于 CI/CD 流水线和自动化测试,请安装 CLI:
npm install -g @usebruno/cli
# 运行集合
bru run --env production
快速入门
创建集合
- 打开 Bruno 并点击 Create Collection。
- 选择本地文件系统中的一个文件夹作为集合文件的存放路径。建议选择项目代码仓库中的位置以便进行 Git 追踪。
- 命名你的集合(例如:"My API")。
Bruno 会创建如下所示的文件夹结构:
my-api/
bruno.json # 集合配置
environments/
development.bru # 环境变量
production.bru
users/
get-all-users.bru # 各个请求文件
create-user.bru
get-user-by-id.bru
创建你的第一个请求
- 在侧边栏的集合上右键点击。
- 选择 New Request。
- 输入名称并选择 HTTP 方法。
以下是一个 .bru 文件的样子:
meta {
name: Get All Users
type: http
seq: 1
}
get {
url: {{baseUrl}}/api/users
body: none
auth: bearer
}
auth:bearer {
token: {{authToken}}
}
headers {
Content-Type: application/json
Accept: application/json
}
assert {
res.status: eq 200
res.body.length: gt 0
}
tests {
test("should return users array", function() {
const data = res.getBody();
expect(data).to.be.an('array');
expect(data.length).to.be.greaterThan(0);
});
}
Bru 语言具有良好的可读性且易于进行 diff 对比——这正是你在版本控制中所需要的。
设置环境
环境允许你在开发(development)、测试(staging)和生产(production)变量之间切换:
# environments/development.bru
vars {
baseUrl: http://localhost:3000
authToken: dev-token-12345
}
# environments/production.bru
vars {
baseUrl: https://api.example.com
authToken: {{process.env.PROD_AUTH_TOKEN}}
}
通过 Bruno UI 右上角的下拉菜单切换环境。
核心功能
脚本编写
Bruno 支持使用 JavaScript 编写请求前(pre-request)和请求后(post-request)脚本:
// 请求前脚本
const timestamp = Date.now();
bru.setVar("timestamp", timestamp);
// 请求后脚本
const response = res.getBody();
bru.setVar("userId", response.id);
断言 (Assertions)
内置断言让你无需编写完整的测试脚本即可验证响应:
assert {
res.status: eq 200
res.body.data.id: isNumber
res.body.data.email: contains @
res.responseTime: lt 500
}
集合运行器 (Collection Runner)
顺序或并行运行集合中的所有请求:
- 右键点击集合。
- 选择 Run Collection。
- 选择你的环境。
- 在运行器输出中查看结果。
从 Postman 导入
从 Postman 迁移非常简单:
- 将你的 Postman 集合导出为 JSON (Collection v2.1)。
- 在 Bruno 中,转到 File > Import Collection。
- 选择 Postman Collection 并选择导出的文件。
- Bruno 会将所有内容转换为所选文件夹中的
.bru文件。
# 你的 Postman 集合变成了可被 Git 追踪的文件
git add my-api/
git commit -m "Import API collection from Postman"
Bruno vs Postman:全方位对比
| 功能 | Bruno | Postman |
|---|---|---|
| 价格 | 免费 (开源) | 免费版 + 付费方案 ($14-$49/用户/月) |
| 存储 | 本地文件系统 | 云端 (需要账号) |
| Git 集成 | 原生支持 (文件为纯文本) | 有限 (JSON 导出/导入) |
| 离线模式 | 全功能支持 | 脱离云端功能受限 |
| 强制账号 | 否 | 是 (自 2023 年起) |
| 集合格式 | .bru (人类可读) |
JSON (冗长) |
| 脚本 | JavaScript | JavaScript |
| 环境变量 | 基于文件 | 云同步 |
| CI/CD CLI | @usebruno/cli (免费) |
Newman (免费) + 监控需付费 |
| 团队协作 | Git (Pull Requests, Branches) | 内置 (基于云) |
| API 文档 | 未内置 | 内置 (付费) |
| Mock 服务器 | 社区插件 | 内置 (付费) |
| 性能 | 快 (轻量级) | 较重 (Electron + 云端) |
| 隐私 | 所有数据保留在本地 | 数据存储在 Postman 服务器 |
什么时候 Postman 依然更好
对于需要内置云端协作、API 文档生成以及无需任何配置即可使用 Mock 服务器的团队,Postman 仍然胜出。如果你的团队已经对 Postman 的工作流产生了依赖,迁移成本可能并不划算。
什么时候 Bruno 更好
如果满足以下情况,Bruno 是更好的选择:
- 希望 API 集合随代码进行版本控制
- 经常离线工作
- 关注数据隐私(无云端依赖)
- 不喜欢强制创建账号
- 想要一款快速、轻量的工具
- 一切工作流都基于 Git
用于 CI/CD 的 Bruno CLI
Bruno CLI 允许你在 CI/CD 流水线中运行集合:
# .github/workflows/api-tests.yml
name: API Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm install -g @usebruno/cli
- run: bru run --env production --output results.json
working-directory: ./api-collection
- name: Upload results
uses: actions/upload-artifact@v4
with:
name: api-test-results
path: ./api-collection/results.json
CLI 选项
| 命令 | 描述 |
|---|---|
bru run |
运行当前集合中的所有请求 |
bru run --env <name> |
指定环境运行 |
bru run --output <file> |
将结果保存到文件 |
bru run request.bru |
运行特定请求 |
bru run folder/ |
运行文件夹中的所有请求 |
bru run --recursive |
递归运行所有子文件夹中的请求 |
高级技巧
敏感信息管理
永远不要将密钥提交到 Git。请使用环境变量:
# environments/production.bru
vars {
baseUrl: https://api.example.com
}
vars:secret [
authToken
]
Secret 变量会在运行时提示输入,不会存储在 .bru 文件中。
组织大型集合
对于大型 API,按资源组织你的集合:
my-api/
bruno.json
environments/
auth/
login.bru
refresh-token.bru
logout.bru
users/
list-users.bru
create-user.bru
update-user.bru
delete-user.bru
orders/
list-orders.bru
create-order.bru
这能清晰地映射到你的 API 路由,使导航更加直观。
常见问题解答
我可以使用 Bruno 测试 GraphQL 吗? 可以。Bruno 原生支持 GraphQL 请求。在创建新请求时选择 "GraphQL" 作为请求类型即可。
Bruno 支持 WebSocket 测试吗? 新版本已提供 WebSocket 支持。请查看 Bruno 更新日志以获取最新功能信息。
Bruno 真的是免费的吗? Bruno 的核心应用是免费且开源的(MIT 许可)。Bruno 提供可选的付费 "Golden Edition",包含高级图形化 Git Diff 和密钥管理等功能,但免费版已涵盖绝大多数用例。
我可以跟团队一起使用 Bruno 吗? 可以。由于集合就是文件,团队可以通过 Git 进行协作——Pull Requests、代码审查、分支和合并都能自然地进行。
总结
Bruno 是开发者一直梦寐以求的 API 客户端:快速、离线优先、Git 友好且免费。如果你厌倦了 Postman 的云端要求,并希望 API 集合与代码共存,Bruno 是 2026 年最佳的替代方案。
简洁的桌面 UI、Bru 标记语言以及适用于 CI/CD 的 CLI,使其成为独立开发者和团队的完备工具。
如果你正在开发使用 AI API 进行媒体生成的应用,免费试用 Hypereal AI —— 无需信用卡。Bruno 是测试并将 Hypereal API 集成到你项目中的绝佳工具。
