FastAPI でのエラー応答のカスタマイズ
無効な JSON リクエストを受信すると、FastAPI は通常、問題に関する詳細情報を含む 422 Unprocessable Entity エラーを返します。ただし、このエラー応答を独自のメッセージと構造でカスタマイズすることは可能です。
これを処理する 1 つの方法は、デフォルトのリクエスト検証例外ハンドラーをオーバーライドすることです。これは、カスタム例外ハンドラー デコレータを実装することで実行できます。カスタム メッセージを含めるようにエラー応答を変更する例を次に示します。
<code class="python">from fastapi import FastAPI, Body, Request, status from fastapi.encoders import jsonable_encoder from fastapi.exceptions import RequestValidationError from fastapi.responses import JSONResponse app = FastAPI() @app.exception_handler(RequestValidationError) async def validation_exception_handler(request: Request, exc: RequestValidationError): return JSONResponse( status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, content=jsonable_encoder({ "detail": exc.errors(), # optionally include the errors "body": exc.body, "custom msg": {"Your error message"} }), ) class Demo(BaseModel): content: str = None @app.post("/demo") async def demo_func(d: Demo): return d.content</code>
この例外ハンドラーは、元の検証エラーとリクエストの本文とともに、カスタム メッセージを含む JSON 応答を返します。
または、エラー応答をプレーン テキスト メッセージとしてカスタマイズできます。
<code class="python">from fastapi.responses import PlainTextResponse @app.exception_handler(RequestValidationError) async def validation_exception_handler(request, exc): return PlainTextResponse(str(exc), status_code=422) </code>
このハンドラーは、エラー メッセージを表す単純なプレーン テキスト文字列を出力します。これらの両方のメソッドを使用すると、エラー応答をカスタマイズして、よりユーザー フレンドリーなメッセージやコンテキスト固有のメッセージを API ユーザーに提供できます。
以上がFastAPI でエラー応答をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。