ホームページ  >  記事  >  バックエンド開発  >  FastAPI でエラー処理とカスタム例外を実装する方法

FastAPI でエラー処理とカスタム例外を実装する方法

WBOY
WBOYオリジナル
2023-07-29 19:00:332471ブラウズ

FastAPI でエラー処理とカスタム例外を実装する方法

はじめに:
FastAPI は Python をベースにした最新の Web フレームワークであり、その高いパフォーマンスと迅速な開発機能により、開発分野での人気が高まっています。フィールドの人気が高まるほどです。実際のアプリケーションでは、エラーや例外が頻繁に発生します。この記事では、開発者がアプリケーションのエラー状況をより適切に処理および管理できるようにするために、FastAPI でエラー処理とカスタム例外を実装する方法を紹介します。

FastAPI エラー処理:
FastAPI には、組み込みの例外処理メカニズムが用意されており、例外ハンドラまたはデコレータを使用することで、アプリケーション内のエラーをキャプチャして処理できます。以下は、基本的なエラー処理の例です。

from fastapi import FastAPI

app = FastAPI()

@app.exception_handler(Exception)
async def validation_exception_handler(request, exc):
    return JSONResponse(status_code=400, content={"message": "Bad request"})

@app.get("/users/{user_id}")
async def read_user(user_id: int):
    if user_id <= 0:
        raise Exception("Invalid user id")
    return {"user_id": user_id}

上記の例では、@app.Exception_handler デコレータを使用して、グローバル例外ハンドラを定義します。これは 2 つのパラメータを受け入れます。最初のパラメータは処理される例外の種類で、2 番目のパラメータは例外の処理に使用されるコールバック関数です。この例では、すべての Exception 例外をキャッチし、カスタム エラー メッセージを含む JSONResponse を返します。

/users/{user_id} ルートにアクセスすると、受信した user_id が 0 以下の場合、カスタム例外がスローされます。上記で定義したグローバル例外ハンドラーを通じて、この例外をキャッチして処理し、エラー メッセージを含む JSONResponse を返すことができます。

カスタム例外:
組み込みの例外タイプを使用することに加えて、例外タイプをカスタマイズして、さまざまなタイプのエラーをより適切に区別して処理することもできます。カスタム例外の例を次に示します。

class InvalidUserIdException(Exception):
    def __init__(self, user_id: int):
        self.user_id = user_id
        super().__init__("Invalid user id")

@app.get("/users/{user_id}")
async def read_user(user_id: int):
    if user_id <= 0:
        raise InvalidUserIdException(user_id)
    return {"user_id": user_id}

上の例では、Exceptionkind を継承する InvalidUserIdException という名前のカスタム例外クラスを定義しました。また、コンストラクターで user_id パラメーターを受け入れて、例外メッセージに特定のユーザー ID を表示します。ルーティング処理関数では、user_id が 0 以下の場合に、このカスタム例外をスローします。

アプリケーションを再度実行すると、前と同じ結果が表示されます。これは、このカスタム例外に対して特定の例外ハンドラーを定義していないためです。カスタム例外をキャッチして処理するには、新しい例外ハンドラを追加します。

@app.exception_handler(InvalidUserIdException)
async def invalid_user_id_exception_handler(request, exc):
    return JSONResponse(status_code=400, content={"message": str(exc)})

上記の例では、InvalidUserIdExceptionabnormal をキャッチするための新しい例外ハンドラを追加しました。以前のグローバル例外ハンドラと同じ構造ですが、処理ロジックが異なります。このハンドラーでは、例外メッセージを文字列に変換し、エラー メッセージを含む JSONResponse を返します。

このように、/users/{user_id} ルートにアクセスすると、受信した user_id が 0 以下の場合、InvalidUserIdException 異常がスローされます。特定の例外ハンドラーを使用すると、この例外をキャッチして処理し、カスタム エラー メッセージを含む JSONResponse を返すことができます。

概要:
FastAPI のエラー処理メカニズムを使用すると、アプリケーションでのエラー状況をより適切に処理および管理できます。グローバル例外ハンドラーを使用してすべての例外をキャッチして処理することも、特定の例外タイプを処理する特定の例外ハンドラーを定義することもできます。同時に、例外クラスをカスタマイズして、さまざまな種類のエラーをより適切に区別して処理することもできるため、コードの可読性と保守性が向上します。

参考リンク:

  • FastAPI 公式ドキュメント: https://fastapi.tiangolo.com/tutorial/handling-errors/
  • Python 公式ドキュメント: https: //docs.python.org/3/tutorial/errors.html

以上がFastAPI でエラー処理とカスタム例外を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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