ホームページ >バックエンド開発 >Python チュートリアル >FastAPI の検証エラーに対するエラー応答をカスタマイズするにはどうすればよいですか?

FastAPI の検証エラーに対するエラー応答をカスタマイズするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-21 06:23:30812ブラウズ

How to Customize Error Responses for Validation Errors in FastAPI?

FastAPI でのエラー応答のカスタマイズ

無効なデータまたは予期しないデータを含むリクエストを受信した場合、多くの場合、デフォルトの FastAPI 応答。このガイドでは、FastAPI でエラー レスポンスを処理およびカスタマイズする方法について説明します。

特に、説明されている問題はリクエスト本文での追加データの受信に関連しており、その結果、デフォルトのエラー詳細で 422 Unprocessable Entity エラーが発生します。目標は、このエラーを適切に処理し、次のようなカスタマイズされた応答を返すことです。

<code class="json">{
  "error": {
    "message": "Invalid JSON body"
  },
  "status": 0
}</code>

エラー応答をカスタマイズするために、FastAPI では検証エラーの例外ハンドラーをオーバーライドできます。次の手順は、これを実現する方法の概要です:

  1. 必要なライブラリをインポートします:

    from fastapi import FastAPI, Body, Request, status
    from fastapi.exceptions import RequestValidationError
    from fastapi.responses import JSONResponse
  2. 定義カスタム例外ハンドラー:

    @app.exception_handler(RequestValidationError)
    async def validation_exception_handler(request: Request, exc: RequestValidationError):
        return JSONResponse(
            status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
            content={
                "detail": exc.errors(),  # optionally include the errors
                "body": exc.body,
                "custom msg": "Your error message"
            }
        )
  3. カスタム ハンドラーを FastAPI アプリに登録します:

    app = FastAPI()
  4. カスタム エラー ハンドラーをテストします:
    無効なデータ (リクエスト本文内の余分なデータなど) を含むリクエストを送信して、例外ハンドラーをトリガーします。

代替ハンドラー:

または、PlainTextResponse を使用して単純なメッセージを返すこともできます:

<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>

これらの手順に従うことで、検証エラーを適切に処理し、返されるエラー応答をカスタマイズできます。 FastAPI アプリケーションによって。

以上がFastAPI の検証エラーに対するエラー応答をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。