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
中看到響應結果