Skip to content

建立 2026-09-14 更新 2026-09-14

什麼是 FastAPI

FastAPI 是用來建立 Web API 的 Python 框架:接收 HTTP 請求、驗證資料、回傳 JSON,並自動產出符合 OpenAPI 的互動文件。它適合做後端服務、微服務,以及機器學習模型的推論 API。

它解決什麼問題

傳統用 Flask 寫 API 時,驗證、文件與型別常常各寫一套:函式參數是一套、手動檢查是一套、Swagger 註解又是一套。三處不一致時,前端對接與除錯成本會立刻上升。

FastAPI 的做法是:用標準 Python 型別提示當唯一來源。你宣告 item_id: int 或一個 Pydantic 模型,框架就同時負責:

  • 把網路上的字串轉成 Python 型別
  • 驗證失敗時回傳清楚的錯誤
  • 讓編輯器知道欄位名稱與型別
  • 產生 OpenAPI schema 與 /docs

少寫重複程式,也就少一批「文件跟程式對不起來」的 bug。

核心特色

官方強調的重點可以記成四句:

  • :效能接近 Node.js / Go 這一級的 Python 框架,底層是 Starlette 與 Pydantic。
  • 好寫:型別提示帶來補齊與檢查,開發速度通常明顯比手寫驗證快。
  • :驗證與自動文件讓常見輸入錯誤在進業務邏輯前就被擋下。
  • 跟標準走:相容 OpenAPIJSON Schema,前端、SDK 產生器都能直接用。

它站在兩個函式庫上:

函式庫 負責什麼
Starlette ASGI 網頁層:路由、中介軟體、WebSocket、測試用戶端
Pydantic 資料層:驗證、序列化、設定管理

你幾乎不必直接操作這兩者,但知道分工後,遇到「這是路由問題還是資料問題」會比較好查。

什麼時候該用它

適合:JSON API、需要清楚合約的前後端分離、要把模型或資料管線包成 HTTP 服務。

不適合硬套的情境:以伺服器端渲染 HTML 為主的傳統網站(Django 仍更完整)、完全不需要 HTTP 的批次腳本。若你在做命令列工具,官方建議看它的姊妹專案 Typer

進一步學習