概要
ミドルウェアはすべてのリクエストの前後に処理を入れることができる機能です
環境
- macOS 11.6.8
- Python 3.10.2
- FastAPI 0.83.0
サンプルコード
import time
from fastapi import FastAPI, Request
app = FastAPI()
@app.middleware("http")
async def add_process_time_header(request: Request, call_next):
start_time = time.time()
response = await call_next(request)
process_time = time.time() - start_time
response.headers["X-Process-Time"] = str(process_time)
return response
@app.get("/")
async def get_msg():
return "Hello"
ちょっと解説
@app.middleware("http")
でミドルウェアを定義します
このデコレーションが付いているメソッドが各リクエストの前 or 後に呼ばれるようになります
call_next が呼ばれるとルーティングの本体の処理が実行されるのでその前後でやりたいことを記載します
デコレータでミドルウェアを使う場合は http を指定するのが必須になります
その他標準で備わっているミドルウェアもあるのでそれらを使う場合は app.add_middleware
を使います (参考)
0 件のコメント:
コメントを投稿