什麼是 FastAPI?
FastAPI 是一個現代、快速(高效能)、基於 Python 3.7+ 類型提示的 Web 框架,用於建構 API。其核心優勢包含:
- 自動生成文件:內建 OpenAPI 與 Swagger UI 支援
- 高效能:基於 Starlette 和 Pydantic,效能可媲美 Node.js 與 Go
- 開發快速:強大的 IDE 支援與自動補全功能
- 自動驗證與序列化:透過 Pydantic 型別自動完成
FastAPI 適合快速構建 RESTful API,尤其在開發微服務、機器學習模型部署、或任何 API 後端都非常合適。
快速開始:環境準備與安裝
建議使用虛擬環境管理專案依賴。
python -m venv .venv |
fastapi
:核心框架uvicorn
:ASGI Server,用來啟動應用程式
第一個 FastAPI 程式:Hello API
# main.py |
啟動應用程式:
uvicorn main:app --reload |
--reload
:啟用熱重載,開發時會自動重新載入程式
訪問 http://127.0.0.1:8000/
,你會看到:
{ |
自動生成的互動式 API 文件
FastAPI 自動提供兩個 API 文件頁面:
- Swagger UI:
http://127.0.0.1:8000/docs
- Redoc:
http://127.0.0.1:8000/redoc
這些文件會根據程式中的路由與型別提示自動生成,方便前後端協作與測試。
使用路由參數與查詢參數
|
範例請求:
GET /items/42?q=fastapi |
回應結果:
{ |
item_id
是路由參數,會自動轉換為 intq
是查詢參數,預設為 None
接收與驗證請求資料:使用 Pydantic 模型
from pydantic import BaseModel |
發送 POST 請求:
POST /items/ |
回應:
{ |
- Pydantic 會自動進行資料驗證與轉換
- FastAPI 可根據模型自動生成 API 文件
表單與檔案上傳支援
from fastapi import Form, UploadFile, File |
這對於處理使用者上傳檔案與表單資料非常方便。
回傳自定義 HTTP 狀態碼與錯誤處理
from fastapi import HTTPException |
這會回傳:
{ |
並帶有 HTTP 404 錯誤。
小結與下一步學習方向
FastAPI 提供了一種現代化且優雅的方式來構建 API:
- 強大的型別檢查與 IDE 支援
- 直覺的程式結構與文件生成
- 高效能適合用於生產環境
建議學習方向:
- 路由分割與模組化管理
- 使用依賴注入(Depends)
- 整合資料庫(如 SQLAlchemy)
- JWT 身份驗證與 OAuth2
- 測試與部署(例如 Docker、Gunicorn)
如果你是從 Flask 或 Django REST Framework 轉過來,會發現 FastAPI 提供了相當先進的開發體驗與高效能,是非常值得學習與投入的框架。