在 FastAPI 中實現會話管理可以使用 SessionMiddleware
中間件來實現。下面是一個簡單的例子:
from fastapi import FastAPI, Request
from fastapi.middleware.session import SessionMiddleware
from fastapi.responses import JSONResponse
app = FastAPI()
# 設置密鑰,用于簽名會話數據
SECRET_KEY = "mysecretkey"
# 設置會話數據的存儲方式
SESSION_COOKIE_NAME = "session"
app.add_middleware(SessionMiddleware, secret_key=SECRET_KEY, cookie_name=SESSION_COOKIE_NAME)
@app.get("/set_session")
async def set_session(request: Request):
session = request.session
session["user_id"] = 1
return {"message": "Session set"}
@app.get("/get_session")
async def get_session(request: Request):
session = request.session
user_id = session.get("user_id")
return JSONResponse(content={"user_id": user_id})
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
在這個例子中,我們首先導入 SessionMiddleware
中間件,并在應用程序中添加該中間件。然后我們可以通過 request.session
來訪問和修改會話數據。在 /set_session
路由中我們設置了一個會話數據,然后在 /get_session
路由中我們獲取并返回了這個會話數據。
需要注意的是,在實際應用中,應該更加復雜和安全地管理會話數據,比如設置會話過期時間、限制會話存儲大小等。FastAPI 的 SessionMiddleware
提供了更多功能來更好地管理會話數據,可以根據具體需求進行配置和使用。