はじめに
Web アプリケーションを作成する場合、 HTTPステータスコードを適切に処理します。発生する可能性のある一般的なステータス コードの 1 つは 404 Not Found で、これは要求されたリソースが見つからなかったことを示します。この記事では、Web API を構築するための最新の Python フレームワークである FastAPI を使用してカスタム 404 ページを返すさまざまな方法について説明します。
例外ハンドラーのアプローチ
FastAPI は便利な方法を提供します例外処理メカニズムを介して例外を処理します。 404 例外を処理するためのカスタム ハンドラーを定義し、カスタム応答を返すことができます。
<code class="python">@app.exception_handler(404) async def not_found_exception_handler(request: Request, exc: HTTPException): return RedirectResponse('https://fastapi.tiangolo.com')</code>
あるいは、FastAPI クラスの例外ハンドラー パラメーターを使用して、グローバル例外ハンドラーを登録することもできます。
<code class="python">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)</code>
ミドルウェアのアプローチ
もう 1 つのアプローチは、HTTP 応答をインターセプトしてステータス コードをチェックするミドルウェアを作成することです。ステータス コードが 404 の場合、ミドルウェアは、応答がクライアントに到達する前にカスタム応答を返すことができます。
<code class="python">@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</code>
カスタム ページ レスポンス
上記のメソッドを使用する、単純なリダイレクト応答を返すことができます。ただし、テンプレートを定義して TemplateResponse を返すことで、よりカスタマイズされた 404 ページを作成することもできます。
<code class="python">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)</code>
テンプレート ディレクトリで、カスタム 404 ページに必要なコンテンツを含む 404.html テンプレートを作成します。
結論
例外ハンドラー、ミドルウェア、またはカスタム ページ応答を活用することで、FastAPI でカスタム 404 Not Found ページを簡単に実装できます。これにより、要求されたリソースが見つからない場合に、よりユーザー フレンドリーなエクスペリエンスを提供でき、Web アプリケーションの全体的なユーザー エクスペリエンスが向上します。
以上がFastAPI でカスタム 404 ページを作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。