Python框架-FastAPI

rustling發表於2024-08-03

FastAPI是一個現代、快速(高效能)的web框架,用於構建API。

官網: https://fastapi.tiangolo.com/
原始碼: https://github.com/fastapi/fastapi

安裝

# 安裝 FastAPI
pip install fastapi
# 安裝 Uvicorn(用於執行 ASGI 伺服器)
pip install uvicorn

建立一個main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

使用 Uvicorn 執行應用

uvicorn main:app --reload

# main: 指的是 main.py 檔案(不需要寫 .py 副檔名)。
# app: 指的是在 main.py 檔案中建立的 FastAPI 例項。
# --reload: 啟用自動過載,使程式碼更改立即生效。

開啟瀏覽器,訪問 http://127.0.0.1:8000,將看到以下 JSON 響應:

{"Hello": "World"}

簡單樣例

from fastapi import FastAPI
from pydantic import BaseModel
from typing import Optional

app = FastAPI()


# 定義資料模型
class Item(BaseModel):
    name: str
    description: str = None


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.post("/items/")
def create_item(item: Item):
    return item


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
    return {"item_id": item_id, "q": q}


@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}

互動式文件

FastAPI 提供了自動生成的互動式 API 文件。啟動應用後,訪問以下 URL:

  • Swagger UI 文件:http://127.0.0.1:8000/docs
  • ReDoc 文件:http://127.0.0.1:8000/redoc

直接可以在頁面中測試API介面,比如傳送一個 POST 請求到 /items/,在Request body中編輯

{
  "name": "test",
  "description": "test"
}

點選Execute,可以在Responses中看到響應結果

相關文章