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

DDD
リリース: 2024-10-21 06:32:29
オリジナル
850 人が閲覧しました

How to Customise Error Responses in FastAPI?

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!