「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > FastAPI でカスタム 404 ページを作成するには?

FastAPI でカスタム 404 ページを作成するには?

2024 年 11 月 26 日に公開
ブラウズ:165

How to Create a Custom 404 Page in FastAPI?

FastAPI を使用してカスタム 404 Not Found ページを返す方法

はじめに

Web アプリケーションを作成する場合、 HTTPステータスコードを適切に処理します。発生する可能性のある一般的なステータス コードの 1 つは 404 Not Found で、これは要求されたリソースが見つからなかったことを示します。この記事では、Web API を構築するための最新の Python フレームワークである FastAPI を使用してカスタム 404 ページを返すさまざまな方法を説明します。

例外ハンドラーのアプローチ

FastAPI は便利な方法を提供します例外処理メカニズムを介して例外を処理します。 404 例外を処理するためのカスタム ハンドラーを定義し、カスタム応答を返すことができます。

@app.exception_handler(404)
async def not_found_exception_handler(request: Request, exc: HTTPException):
    return RedirectResponse('https://fastapi.tiangolo.com')

または、FastAPI クラスの例外ハンドラー パラメーターを使用して、グローバル例外ハンドラーを登録できます。

async def not_found_error(request: Request, exc: HTTPException):
    return RedirectResponse('https://fastapi.tiangolo.com')

exception_handlers = {404: not_found_error}
app = FastAPI(exception_handlers=exception_handlers)

ミドルウェアアプローチ

もう 1 つのアプローチは、HTTP 応答をインターセプトしてステータス コードをチェックするミドルウェアを作成することです。ステータス コードが 404 の場合、ミドルウェアは、応答がクライアントに到達する前にカスタム応答を返すことができます。

@app.middleware("http")
async def redirect_on_not_found(request: Request, call_next):
    response = await call_next(request)
    if response.status_code == 404:
        return RedirectResponse("https://fastapi.tiangolo.com")
    else:
        return response

Custom Page Response

上記のメソッドを使用すると、単純なリダイレクト応答を返すことができます。ただし、テンプレートを定義して TemplateResponse.

from fastapi.templating import Jinja2Templates

templates = Jinja2Templates(directory='templates')

async def not_found_error(request: Request, exc: HTTPException):
    return templates.TemplateResponse('404.html', {'request': request}, status_code=404)

テンプレート ディレクトリに、カスタム 404 ページに必要なコンテンツを含む 404.html テンプレートを作成します。

結論

例外ハンドラー、ミドルウェア、またはカスタム ページ応答を活用することで、 FastAPI でカスタムの 404 Not Found ページを簡単に実装できます。これにより、要求されたリソースが見つからない場合に、よりユーザー フレンドリーなエクスペリエンスを提供でき、Web アプリケーションの全体的なユーザー エクスペリエンスが向上します。

リリースステートメント この記事は、侵害がある場合は1729691392に再現されています。勉強[email protected]に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3