2022年10月26日水曜日

FastAPIのミドルウェアを使ってみる

FastAPIのミドルウェアを使ってみる

概要

ミドルウェアはすべてのリクエストの前後に処理を入れることができる機能です

環境

  • 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 件のコメント:

コメントを投稿