FastAPI 基礎教學
寫給已經會寫 Python,想用 FastAPI 做出第一支後端服務,卻在文件的十行範例之後不知道該往哪裡走的工程師。這是一份三個月、共 12 期的電子報,每週一期,每封信獨立成篇、只講一件事,帶你從最小的專案一路走到 JWT 登入、測試與 Docker 部署,並誠實列出系列沒有涵蓋的方向。
訂閱電子報
訂閱後你會看到的三個重點
-
每週一期,獨立成篇
每封信只講一件事,不需要追過前面幾期,任何一週加入都看得懂
-
型別標註就是你的確認規則
從路徑參數到請求本文,看 FastAPI 如何靠型別提示替你擋掉錯誤輸入,也看懂 422 在說什麼
-
從 main.py 走到 Docker
一條路線串起路由、Pydantic、Depends、資料庫、JWT 登入、測試與部署,並點出哪些要自己補
你會收到的內容
-
十行程式碼跑起一個服務,然後看它缺了什麼
逐行拆解最小專案,認識 app、uvicorn 與自動產生的 /docs,並點出得自己補的部分
-
路由與路徑參數,型別標註會幫你擋掉什麼
逐欄解讀 422 回應,並整理路徑參數、查詢參數與預設值
-
請求本文進來,欄位對不上時發生什麼事
用 Pydantic 模型接本文,缺欄位、多欄位、型別不符各是什麼結果
-
回應長什麼樣子,由你宣告而不是由資料庫決定
用 response_model 拆開輸入與輸出模型,避免雜湊後的密碼外洩
-
Depends 一下,共用邏輯就不用到處複製
把分頁與取使用者抽成依賴函式,並看懂子依賴與同一請求內的快取
-
例外丟出去之後,使用者看到的是什麼
統一錯誤格式,並避免把內部細節回給用戶端
-
async def 還是 def,寫錯會卡住整台伺服器
事件迴圈與執行緒池的差別,以及該怎麼選
-
資料庫連線,一個請求一個 Session
引擎全域一個,Session 每個請求一個,並揪出迴圈裡的 N+1
-
登入之後,每個請求怎麼證明自己是誰
雜湊密碼、簽發 JWT,並用依賴保護路由
-
測試不用真的開伺服器
TestClient 搭配 dependency_overrides,把真實資料庫換成記憶體內的 SQLite
-
同一份程式,怎麼在三個環境跑起來
用環境變數切換組態設定,並附一份最小的 Dockerfile
-
十二週後,拿一份清單去評估你的第一支服務
收斂成四個層次、十二個問題的檢查清單,並列出系列沒有涵蓋的方向