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
- 專案