Python FastAPI での生の HTTP リクエスト/レスポンス本体のログ記録
Python FastAPI では、特定のリクエスト/レスポンスの生の JSON 本文をログに記録できます。ミドルウェアまたはカスタム APIRoute クラスを使用してルートをルートします。
オプション1: ミドルウェアの使用
ミドルウェアを使用すると、リクエストと応答がエンドポイントによって処理される前に処理できます。ミドルウェアを作成するには:
@app.middleware("http") async def middleware(request: Request, call_next): # ... return await call_next(request)
request.body() メソッドまたは request.stream() メソッドを使用して、リクエスト本文を使用します。後でログを記録できるよう、本文を BackgroundTask に保存します。
応答本文については、カスタム コードを使用して読み取り、保存します。
res_body = b'' async for chunk in response.body_iterator: res_body += chunk
その後、リクエスト本文と応答本文の両方を内部に記録できます。応答時間への影響を避けるために、BackgroundTask を使用します。
オプション 2: カスタム APIRoute の使用クラス
リクエストとレスポンスの本文を処理するカスタム APIRoute クラスを作成します:
class LoggingRoute(APIRoute): # ... async def custom_route_handler(request: Request) -> Response: # ... return response
カスタム ルート ハンドラーで、リクエストの本文を消費し、オプション 1 と同様にレスポンスの本文を処理します。このアプローチを使用すると、ログを特定のルートに制限できます。 APIRouters.
考慮事項
以上がPython FastAPI で生の HTTP リクエストとレスポンスの本文をログに記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。