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}
上の例では、Exception
kind を継承する 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)})
上記の例では、InvalidUserIdException
abnormal をキャッチするための新しい例外ハンドラを追加しました。以前のグローバル例外ハンドラと同じ構造ですが、処理ロジックが異なります。このハンドラーでは、例外メッセージを文字列に変換し、エラー メッセージを含む JSONResponse
を返します。
このように、/users/{user_id}
ルートにアクセスすると、受信した user_id
が 0 以下の場合、InvalidUserIdException
異常がスローされます。特定の例外ハンドラーを使用すると、この例外をキャッチして処理し、カスタム エラー メッセージを含む JSONResponse
を返すことができます。
概要:
FastAPI のエラー処理メカニズムを使用すると、アプリケーションでのエラー状況をより適切に処理および管理できます。グローバル例外ハンドラーを使用してすべての例外をキャッチして処理することも、特定の例外タイプを処理する特定の例外ハンドラーを定義することもできます。同時に、例外クラスをカスタマイズして、さまざまな種類のエラーをより適切に区別して処理することもできるため、コードの可読性と保守性が向上します。
参考リンク:
以上がFastAPI でエラー処理とカスタム例外を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。