ホームページ  >  記事  >  バックエンド開発  >  FastAPI で無効な JSON リクエストに対するエラー応答をカスタマイズするにはどうすればよいですか?

FastAPI で無効な JSON リクエストに対するエラー応答をカスタマイズするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-21 06:28:30736ブラウズ

How to Customize Error Responses for Invalid JSON Requests in FastAPI?

FastAPI でのエラー処理のカスタマイズ

質問:

無効な JSON リクエストを送信する場合FastAPI バックエンドの場合、処理できないエンティティ ステータス コード (422) でエラーがスローされます。応答には詳細なエラーの詳細が含まれており、ユーザーフレンドリーなエラー処理には理想的ではありません。エラー応答をカスタマイズする方法はありますか?

回答:

この状況に対処し、エラー応答をカスタマイズするには、FastAPI でリクエスト検証例外ハンドラーをオーバーライドできます。 。実装方法は次のとおりです。

まず、無効な JSON を渡しているため、サーバーは 422 Unprocessable Entity エラーで正しく応答することに注意してください。

例外ハンドラーのオーバーライド:

  1. FastAPI アプリケーションに次のコードを追加して、RequestValidationError のデフォルトの例外ハンドラーをオーバーライドします。
<code class="python">@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"}
        }),
    )</code>
  1. 上記のコード"custom msg" の値を変更することで、エラー メッセージをカスタマイズできます。

PlainTextResponse を返す:

あるいは、カスタム メッセージを返すこともできます。 PlainTextResponse を使用したエラー メッセージ:

<code class="python">@app.exception_handler(RequestValidationError)
async def validation_exception_handler(request, exc):
    return PlainTextResponse(str(exc), status_code=422)</code>

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

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