fastapi/fastapi

FastAPI framework, high performance, easy to learn, fast to code, ready for production

FastAPI – 用於 API 的高效率 Python Web 框架

是什麼 – FastAPI 是一個現代、可投入生產環境的 Web 框架,用於使用 Python 建立 HTTP API。它利用標準 Python 類型提示、Starlette 作為非同步 Web 核心,以及 Pydantic 進行資料驗證/序列化。

為何重要 – 此框架在效能上可與 Node.js 或 Go 相媲美,同時保持開發者體驗的簡潔:你只需撰寫一般的 Python 函數,即可免費獲得自動請求驗證、序列化,以及互動式 OpenAPI 文件(Swagger UI 與 ReDoc)。


核心功能(如 README 所列)

  • 效能 – 基於 Starlette 與 Pydantic;是最快的 Python API 框架之一。
  • 開發快速 – 通常開發速度提升 200–300%。
  • 減少錯誤 – 由於自動驗證,開發者引入的錯誤減少約 40%。
  • 智慧編輯器支援 – 完全支援類型感知的自動補完與語法檢查。
  • 標準規範 – 自動產生 OpenAPI(Swagger)與 JSON-Schema 規範。
  • 自動文件 – 內建互動式 Swagger UI 與 ReDoc 介面,開箱即用。
  • 依賴注入 – 簡單的類型導向 DI 系統,支援清晰的架構設計。
  • 安全助手 – 內建 OAuth2、JWT、HTTP Basic 等功能。
  • 可擴充性 – 透過 Starlette 擴充功能支援 WebSocket、CORS、Cookie 會話、GraphQL(透過 Strawberry)等。

常見使用情境

  • 微服務與內部 API。
  • 機器學習模型或資料流程的公開 RESTful 服務。
  • 需要快速迭代的 Web 或行動應用後端。
  • 需要自動 OpenAPI 文件的原型設計與生產部署。

快速上手(來自 README)

# 使用 uv(或 pip)安裝 – "standard" 額外套件包含推薦的相依性
uv add "fastapi[standard]"

建立 main.py

from fastapi import FastAPI

app = FastAPI()

@app.get('/')
def read_root():
    return {"Hello": "World"}

@app.get('/items/{item_id}')
def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}

執行開發伺服器:

uv run fastapi dev   # 自動重載,服務位址為 http://127.0.0.1:8000

瀏覽 http://127.0.0.1:8000/docs(Swagger UI)或 .../redoc 查看替代介面。


擴展範例(PUT 請求帶請求主體)

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: float
    is_offer: bool | None = None

@app.put('/items/{item_id}')
def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}

文件會自動更新以顯示新的請求主體結構。


部署選項

  • FastAPI Cloud – 透過 uv run fastapi deploy 一鍵部署(由同一團隊提供)。
  • 任何 ASGI 相容主機(Uvicorn、Hypercorn、Gunicorn + Uvicorn 工作程序、Docker、無伺服器平台等)。

誰在使用

README 提到 Microsoft、Uber(Ludwig)、Netflix(Dispatch)、Cisco 以及許多其他公司已在生產環境中使用。


TL;DR

FastAPI 讓你撰寫標準 Python 函數,加上類型提示,即可立即獲得:

  • 高效率非同步處理,
  • 自動請求驗證與回應序列化,
  • 即時 OpenAPI 文件,
  • 強大的編輯器支援。 學習曲線極低,是現代 Python API 的首選方案。

相關

  • 專案
  • 專案
  • 專案
  • Dispatch
  • 專案