# FastAPI 筆記 # 開場 - 簡單自介 - 動機 - 文章大綱 - 先介紹基礎的使用 (6) - 第一支程式 - 會提到 lifespan - 會提到 logger - 建立 API - 路由、參數、動態路由 - 這邊以 GET POST 為主做 Demo 就好 - 設計 API - RESTful API - HTTP method - form file - API 管理 - add router - API 版本 - 文件 - depends - API 文件設定 - 再介紹進階的設定 (5) - Response - JSON - File, Stream - Redirect - Response 2 - HTML - Jinjia - 簡單 Demo 一個前端 - mount - favicon - Middleware + CORS - CORS 簡介 - middleware - 環境變數 - pydantic - 接著開始舉例說明各種應用與使用情境 (11) - 登入驗證 (basic auth) - 登入驗證 (JWT) - 簡介 JWT - raise HTTPException - 再度提到 depends - 再度提到 環境變數 - 資料庫 (ORM) - 簡介 ORM - SQL injection - SQLAlchemy - 資料庫 Demo - SQLite - Models (schema?) - 建立 - CRUD - 資料庫維護 - Alembic - 預設資料 - 資料庫連線注意事項 - 何時建立 session - pool - yeild - 錯誤處理 - 分類 - 再度提一下 logger - 錯誤處理 (middleare) - 再探 middleware、HTTPException - 自訂義 Exception - Log - Log 設定 (存在本地、terminal print 出來) - Loguru - 用 loguru 客製化 log 內容 - 如何客製化內容 - 用 traceback 取得更多錯誤資訊 - 最後放些擺不進去的 - async await - background task - web socket - health check - 神奇技巧們 (使用到的機率不高) - sub API - lifespan - - 期許 筆記 希望對即將入門的人有幫助 或是裡面提到的特殊情境 (也是實際工作上遇到的) 熟練的人也可以給意見 > 以某個主題貫穿全文? 時事? # 第一支程式 # API 基本介紹 路由、參數、動態路由 RESTful API form file # API addrouters > API 越來越多 tag prefix /api/v1 檔案架構 簡單提一下 swagger 文件 (但要 demo) depends injection (可以加在 function 或 router) (舉例用驗證 header) # API 文件 介紹 swagger summary description 參數 schema # 更大的架構 - 不同版本 - 多個文件 > subAPI? # Response JSON File Redirect # Response 2 HTML Jinjia # 前端 HTML CSS javascript favicon # async await # JWT Token jwt.io 官網範例 (提一下環境變數,之後再討論) # JWT Token 2 第二次 depends # websocket # 環境變數 app.config .env .toml # CORS # 資料庫 ## ORM簡介 SQLAlchemy ## Models + CRUD ## 範例程式 # 資料庫進階 ? 什麼時候建立 session ? pool ? Sesssion yeild Depends # 錯誤處理 ## 錯誤處理分類 錯誤處理可以分為兩大類,一種是可預期的錯誤,另一種是不可預期的錯誤 (舉例) 而這些錯誤,都應該要有對應的處理方式,包含回傳對應的錯誤訊息,並且被記錄下來, 方便之後回頭檢查問題來源, ## 可預期錯誤 ## Python try except + raise ## log 前面提到,這些錯誤都應該被記錄下來,此時就會使用 Log 系統 簡介預設的 Log 從 Request 拿更多資料 ## 不可預期的錯誤 系統預設是回傳 500 用醜陋的寫法整個包起來 # 再探錯誤處理 (middleware) ## middleware 簡介 ## 在 middleware 處理錯誤 + log ## HTTPException HTTP status code ## 自訂義 HTTPException # Loguru ## 簡單回顧 ## Loguru vs. logger ## 設定 > 用 loguru 客製化 log 內容 > 用 traceback 取得更多錯誤資訊 # 測試 ## 測試簡介 單元測試 E2E ## pytest + client # CI/CD ## github actions 環境變數 secrets # 部屬 ## Docker ## 免費平台 ## uvicorn + worker ? # 其他 (尚未整理) ## background task ## 定期任務
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up