🚀 Bruno:現代化開源 API 協作工具方案

引言:打破雲端綁架,回歸 Git 驅動的開發體驗

在使用 API 開發工具時,您是否曾擔心資料被雲端平台綁架,或者難以進行版本控制?Bruno 是一個開源且強大的新型 API 客戶端工具 (API Client),被廣泛視為 Postman 與 Insomnia 的最佳現代開源替代方案。它讓 API 的演進能與原始碼同步,實現真正的 API-as-Code


📖 什麼是 Bruno?

Bruno 的核心哲學是與其強迫將資料儲存在雲端,不如選擇將 API 請求儲存為 純文字檔案(如 .bru.yml)。這意味著您的 API 集合可以像程式碼一樣,直接放入 Git 倉庫中進行版控、分支管理與同儕審查 (Code Review)。


🛠️ 安裝指南 (macOS)

建議使用 Homebrew 安裝,方便日後透過指令一鍵更新所有開發工具:

# 使用 Homebrew 安裝
brew install bruno

當然,您也可以前往 Bruno 官網 下載安裝檔。


🔄 從 Postman 無痛轉移

📦 預覽須知:本圖使用 Mermaid 語法繪製。若在 VS Code 中看不到圖示,請安裝擴充套件 Markdown Preview Mermaid Support(搜尋 bierner.markdown-mermaid)後,重新開啟 Markdown Preview 即可正常顯示。

flowchart TD
    A[Postman Collection] -->|Export v2.1| B(JSON File)
    B -->|Import in Bruno| C{Select Directory}
    C --> D[Automatic Conversion]
    D --> E[Check Script Compatibility]
    E --> F[Done: Git-Ready Collection]

腳本語法對照表 (Troubleshooting)

如果您原本在 Postman 有撰寫測試腳本,請參考下表進行微調:

功能 Postman 語法 Bruno 語法
獲取變數 pm.environment.get("id") bru.getEnvVar("id")
設定變數 pm.environment.set("id", 1) bru.setEnvVar("id", 1)
獲取 Body pm.response.json() res.getBody()
獲取 Header pm.response.headers.get("X") res.getHeader("X")
發送請求 pm.sendRequest(...) await bru.sendRequest(...)

🤖 自動化測試與 CLI

Bruno 提供強大的 CLI 工具,讓 API 測試能輕鬆整合進 CI/CD 流程中:

# 安裝 CLI
npm install -g @usebruno/cli

# 執行單一測試
bru run Auth/Login.bru --env Local

# 執行全項目並產出 JUnit 報告
bru run --env Local --output results.xml --format junit

[!IMPORTANT] 執行 bru run 時,路徑必須位於包含 bruno.json 的專案根目錄。


結語:開發者主權的回歸

Bruno 不僅是一個工具,更是一種對 開發者主權 的回歸。它讓 API 測試資料不再是孤島,而是與專案代碼並肩作戰的資產。對於重視資安、效能與版控準確性的開發團隊,Bruno 是絕對的首選。

歡迎前往 chiisen/Bruno 貢獻或獲取更多進階技巧!🚀✨


Open Source Git-Ready GitHub