FastAPI 教學 - Python API / Web 開發框架

什麼是 FastAPI?

FastAPI 是一個用於建構 API 的現代、快速(高效能)的 Web 框架。它是基於 Python 標準的型別提示 (Type Hints) 功能所建構的。

主要特色包括:

  • 快速:可與 NodeJSGo 並駕齊驅的極高執行效能(歸功於 Starlette 和 Pydantic)。它是目前最快的 Python 框架之一。
  • 快速開發:將開發功能的速度提升約 200% 到 300%。
  • 更少的 Bug:減少約 40% 的人為(開發者)錯誤。
  • 直觀:強大的編輯器支援。到處都有自動補全 (Autocomplete) 功能。除錯時間更少。
  • 簡單:設計易於使用和學習。閱讀文件時間更少。
  • 簡潔:盡量減少程式碼重複。每個參數宣告都有多種功能。更少的 Bug。
  • 標準化:基於並完全相容於 API 的開放標準:OpenAPI(以前稱為 Swagger)和 JSON Schema
  • 非同步支援:原生支援 asyncawait,能夠輕鬆處理高併發的長連接任務。
  • 安全性:內建強大的安全與身份驗證模組,包括 OAuth2 (搭配 JWT tokens) 和 API keys。
Starlette 負責 Web 的部分(路由、Request/Response),Pydantic 負責資料的部份(驗證、序列化)。FastAPI 將兩者完美的結合在一起。

為什麼選擇 FastAPI?

在過去,Python 的 Web 框架選擇通常是 Django 或 Flask。

  • Django 功能強大且完整,但相對笨重。
  • Flask 輕量且靈活,但對於資料驗證和非同步 (Async) 支援較為現代框架弱。

FastAPI 的出現解決了許多現代 Web 開發的痛點:

  1. 原生支援非同步 (Async/Await):充分利用現代 Python 的非同步特性,處理高併發請求更加得心應手。
  2. 自動生成文件:撰寫程式碼的同時,自動生成互動式 API 文件 (Swagger UI 和 ReDoc),這對於前後端分離開發非常重要。
  3. 強大的資料驗證:利用 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 的強大功能。