API Academy
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
HomePetstore APIExplore more APIs
HomePetstore APIExplore more APIs
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
  1. API Gateway
  • 歡迎
  • 目錄
  • API 學院
    • Get Started
      • 什麼是 API?
      • API 如何運作?
      • 如何呼叫 API?
      • 如何閱讀 API 文件?
      • 章節總結
    • API Fundamentals
      • API 基礎知識:概覽
      • 方法與路徑
      • 參數
      • 請求 Body
      • 回應
      • API 規格與 OAS
      • 章節總結
    • Working with APIs
      • 使用 API:概覽
      • 根據規格發送請求
      • 環境與變數
      • 串聯多個端點
      • 處理 Auth
      • 處理 API 簽名
      • 腳本介紹
      • 章節總結
    • Mocking APIs
      • Mocking API:概覽
      • Smart Mock
      • Mock 預期結果
      • Cloud Mock
      • Mock 腳本
      • 章節總結
    • Designing APIs
      • 設計 API:概覽
      • API 設計介紹
      • 建立您的第一個 API 專案
      • 分析需求並規劃您的 API
      • 設計資料模型
      • 設計端點
      • 使用組件與可重用性
      • 設定與 Auth
      • API 設計指南
      • 章節總結
    • Developing APIs
      • 開發 API:概覽
      • 設定:安裝您的 AI 程式碼助手
      • 快速入門:30 分鐘內從規格到運行的 API
      • 了解生成的程式碼
      • 使用 Apidog 測試您的 API
      • 部署:將您的 API 上線
      • 章節總結
    • Testing APIs
      • 測試 API:概覽
      • 快速入門:您的第一個測試場景
      • 整合測試與資料傳遞
      • 動態值
      • 斷言與驗證
      • 流程控制:If, For, ForEach
      • 資料驅動測試
      • 性能測試
      • 測試報告與分析
      • CI/CD 整合
      • 排程任務與自動化
      • 進階測試策略
      • 章節總結
    • API Documentations
      • API 文件:概覽
      • 發布您的第一個 API 文件
      • 自訂文件外觀
      • 給消費者的互動功能
      • 進階發布設定
      • 管理 API 版本
      • 章節總結
    • Advanced API Technologies
      • 進階 API 技術:概覽
      • GraphQL
      • gRPC
      • WebSocket
      • Socket.IO
      • Server-Sent Events
      • SOAP
      • 章節總結
    • API Lifecycle
      • API 生命周期:概覽
      • API 生命周期的階段
      • API 治理
      • API 安全最佳實踐
      • 監控與分析
      • API 版本策略
      • API 的未來
      • 章節總結
    • API Security
      • API 安全性:概覽
      • API 安全性基礎知識
      • 身份驗證 vs. 授權
      • 了解 OAuth 2.0 和 OpenID Connect
      • JSON Web Tokens (JWT)
      • OWASP API 安全 Top 10
      • 加密與 HTTPS
      • 章節總結
    • API Tools
      • API 工具:概覽
      • API 工具的演變
      • API Clients
      • 命令列工具 (cURL, HTTPie)
      • API 設計和文件工具
      • API Mocking 工具
      • API 測試工具
      • 一體化 API 平台
      • 章節總結
    • API Gateway
      • API Gateway:概覽
      • 什麼是 API Gateway?
      • API Gateway 的關鍵功能
      • API Gateway vs 負載平衡器 vs 服務網格
      • 流行 API Gateway 解決方案
      • BFF (Backend for Frontend) 模式
      • 章節總結
HomePetstore APIExplore more APIs
HomePetstore APIExplore more APIs
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
  1. API Gateway

BFF (Backend for Frontend) 模式

隨著系統的成長,「一體適用 (One Size Fits All)」的 API Gateway 可能會成為瓶頸。BFF (Backend for Frontend) 模式為複雜的多客戶端應用程式提供了解決方案。

問題:多樣化的客戶端#

想像你有兩個客戶端:
1.
行動 App:需要小的 Payload(為了節省數據/電池)。需要顯示簡單的「訂單摘要」。
2.
網頁儀表板:需要巨大的 Payload(頻寬很便宜)。需要顯示複雜的「帶有分析的訂單歷史」。
如果您只有一個通用 API /orders,您必須妥協:
要嘛發送太多資料給行動裝置(臃腫)。
要嘛發送太少資料給網頁(迫使它進行 10 次額外的呼叫)。

解決方案:為每個前端提供專用後端#

與其使用一個通用 API Gateway,不如為每種客戶端類型建立特定的入口點 (BFFs)。
Mobile BFF:呼叫底層微服務(使用者、訂單、庫存),將資料縫合成專為 iOS 螢幕設計的緊湊 JSON,並將其發送回去。
Web BFF:呼叫相同的微服務,但彙總專為桌面視圖設計的詳細資料。

好處#

1.
最佳化體驗:API 完美匹配 UI 需求。沒有過度獲取 (over-fetching) 或獲取不足 (under-fetching)。
2.
團隊自主權:行動團隊可以編寫自己的 BFF 程式碼(例如,用 Node.js)來完全按照他們想要的方式格式化資料,而無需等待後端團隊更改核心微服務。
3.
封裝:如果行動 App 需要特定的舊身份驗證流程,它會保留在 Mobile BFF 中,而不會污染核心系統。

比較#

直接方法:Mobile -> 微服務(壞:緊密耦合)。
Gateway 方法:Mobile -> Gateway -> 微服務(較好:單一入口)。
BFF 方法:Mobile -> Mobile BFF -> 微服務(最適合複雜 API)。

何時使用 BFF?#

當您有多個不同的客戶端類型(行動、網頁、電視、手錶)且資料需求截然不同時。
當您的 UI 團隊被後端團隊阻礙時。

關鍵要點#

一體適用 的 API 通常會導致行動裝置上的過度獲取或網頁上的獲取不足。
BFF 為每個特定的使用者介面建立專用的 API 層,最佳化性能和開發人員自主權。
下一步:Gateway 章節到此結束!讓我們在 章節總結 中回顧所有內容。
Modified at 2025-12-29 09:35:19
Previous
流行 API Gateway 解決方案
Next
章節總結
Built with