Python 的 FastAPI 初體驗

FastAPI 是一個 高效能 的 Python 網路框架。它主要用來開發 API,也就是我們常說的後端服務。

FastAPI 的重要特點

  • 速度很快FastAPI 的速度可以跟 Node.js 和 Go 這些語言匹敵。它使用了 Starlette(負責處理網路部分)和 Pydantic(負責資料驗證)這兩個庫,所以執行效率非常好。
  • 基於標準它完全支援並使用了現代 API 的標準,像是 OpenAPI(以前叫 Swagger)和 JSON Schema。這讓你的 API 文件會自動生成,非常方便。
  • 資料驗證FastAPI 利用了 Pydantic 這個庫。你可以用 Python 的 Type Hints(型別提示)來定義你的資料結構。 這樣它在接收到資料時,會自動檢查資料的型別是不是對的,少了這個步驟就會直接拒絕,安全很多。
  • 自動文件因為它基於標準,FastAPI 會自動生成 互動式 API 文件。你不需要自己手寫。它通常會提供兩個介面:Swagger UI 和 ReDoc,讓你直接在瀏覽器上測試你的 API。
  • Async/Await 支援它支援 Python 的 非同步 程式設計,也就是 async 和 await 關鍵字。這在處理大量 I/O 操作,比如資料庫查詢或外部 API 呼叫時,可以讓你的服務在等待時去做其他事,大大提升了服務的併發處理能力。

簡單說

你可以把 FastAPI 想成一個 現代、快速、自動化 的 API 開發工具。它讓寫 API 就像寫普通的 Python 函式一樣簡單,但同時又給你企業級的效能和自動化文件。對於想快速建構高效能後端服務的人來說,這是一個很棒的選擇。


試試看用 FastAPI 寫一個簡單的 Hello World 服務

當然可以。我們來看看用 FastAPI 建立一個最簡單的 Hello World 服務需要哪些步驟和程式碼。

準備工作

首先,你需要安裝 fastapi 和一個 ASGI 伺服器,通常我們會選擇 Uvicorn 來運行它。

Bash

pip install fastapi uvicorn

建立主程式碼

我們會建立一個叫做 main.py 的檔案。

Python

from fastapi import FastAPI

# 1. 建立一個 FastAPI 應用程式實例
# 這是所有 API 服務的起點
app = FastAPI()

# 2. 定義一個 API 路由 (Route)
# @app.get("/") 表示當使用者用 GET 方法訪問根路徑 ("/") 時,
# 就會執行下面的函式。
@app.get("/")
def read_root():
    # 3. 函式回傳的內容會自動轉換成 JSON 格式
    return {"message": "Hello World"}

運行服務

接下來,你要在終端機或命令提示字元中運行 Uvicorn 伺服器,並告訴它去載入我們的應用程式。

uvicorn main:app --reload
  • main:app 的意思是:去 main.py 檔案裡找名為 app 的 FastAPI 應用程式實例。
  • --reload 則代表如果你修改了程式碼,伺服器會自動重新啟動,方便開發。

測試結果

服務啟動後,你應該會看到類似這樣的訊息:

Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to stop)

  1. 訪問服務:在你的瀏覽器中打開這個位址:http://127.0.0.1:8000
    • 你就會看到 { "message": "Hello World" } 這個 JSON 格式的結果
  2. 查看自動文件:FastAPI 最棒的功能之一是自動文件。訪問這個位址:http://127.0.0.1:8000/docs
    • 你會看到一個 Swagger UI 介面,裡面清楚列出了你剛剛定義的 / 路由,你可以直接在上面測試它。

這樣,你就成功建立並運行了一個簡單但功能完整的 FastAPI 服務了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *