FastAPI 教學 - Python API / Web 開發框架
什麼是 FastAPI?
FastAPI 是一個用於建構 API 的現代、快速(高效能)的 Web 框架。它是基於 Python 標準的型別提示 (Type Hints) 功能所建構的。
主要特色包括:
- 快速:可與 NodeJS 和 Go 並駕齊驅的極高執行效能(歸功於 Starlette 和 Pydantic)。它是目前最快的 Python 框架之一。
- 快速開發:將開發功能的速度提升約 200% 到 300%。
- 更少的 Bug:減少約 40% 的人為(開發者)錯誤。
- 直觀:強大的編輯器支援。到處都有自動補全 (Autocomplete) 功能。除錯時間更少。
- 簡單:設計易於使用和學習。閱讀文件時間更少。
- 簡潔:盡量減少程式碼重複。每個參數宣告都有多種功能。更少的 Bug。
- 標準化:基於並完全相容於 API 的開放標準:OpenAPI(以前稱為 Swagger)和 JSON Schema。
- 非同步支援:原生支援
async和await,能夠輕鬆處理高併發的長連接任務。 - 安全性:內建強大的安全與身份驗證模組,包括 OAuth2 (搭配 JWT tokens) 和 API keys。
Starlette 負責 Web 的部分(路由、Request/Response),Pydantic 負責資料的部份(驗證、序列化)。FastAPI 將兩者完美的結合在一起。
為什麼選擇 FastAPI?
在過去,Python 的 Web 框架選擇通常是 Django 或 Flask。
- Django 功能強大且完整,但相對笨重。
- Flask 輕量且靈活,但對於資料驗證和非同步 (Async) 支援較為現代框架弱。
FastAPI 的出現解決了許多現代 Web 開發的痛點:
- 原生支援非同步 (Async/Await):充分利用現代 Python 的非同步特性,處理高併發請求更加得心應手。
- 自動生成文件:撰寫程式碼的同時,自動生成互動式 API 文件 (Swagger UI 和 ReDoc),這對於前後端分離開發非常重要。
- 強大的資料驗證:利用 Python Type Hints 和 Pydantic,定義好資料模型後,驗證邏輯自動完成,不用再寫一堆
if-else檢查欄位。
誰在使用 FastAPI?
許多大型科技公司和新創公司都已經在生產環境中使用 FastAPI,例如:
- Microsoft
- Uber
- Netflix
準備工作
在開始之前,你需要具備以下基礎知識:
- Python 基礎:熟悉基本語法。
- Python 型別提示 (Type Hints):FastAPI 深度依賴這個特性,建議先了解
str,int,List,Dict等基本型別標註。 - HTTP 協定:了解 GET, POST, PUT, DELETE 等 HTTP 方法的基本概念。
接下來的教學中,我們將一步步帶你從安裝環境開始,掌握 FastAPI 的強大功能。