Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gehe ich mit benutzerdefinierten „404 Not Found“-Antworten in FastAPI um?

Wie gehe ich mit benutzerdefinierten „404 Not Found“-Antworten in FastAPI um?

DDD
DDDOriginal
2024-10-24 02:06:29910Durchsuche

How to Handle Custom 404 Not Found Responses in FastAPI?

Wie gebe ich mit FastAPI eine benutzerdefinierte 404-Seite „Nicht gefunden“ zurück?

Wenn Sie auf einen 404-Antwortstatuscode stoßen, wird eine Standardfehlerseite angezeigt Wird normalerweise in Webanwendungen angezeigt. Möglicherweise möchten Sie jedoch eine benutzerdefinierte 404-Seite für ein persönlicheres Erlebnis bereitstellen. Mit FastAPI ist die Implementierung einer benutzerdefinierten 404-Seite unkompliziert.

Benutzerdefinierter Ausnahmehandler

Eine effektive Methode ist die Nutzung eines benutzerdefinierten Ausnahmehandlers. Durch Angabe des Statuscodes, den Sie verarbeiten möchten, können Sie einen gezielten Handler erstellen.

<code class="python">from fastapi.responses import RedirectResponse
from fastapi.exceptions import HTTPException

@app.exception_handler(404)
async def not_found_exception_handler(request: Request, exc: HTTPException):
    return RedirectResponse('https://example.com/404')</code>

Exception-Handler-Parameter

Alternativ können Sie den Ausnahmehandler-Parameter von verwenden die FastAPI-Klasse.

<code class="python">from fastapi import FastAPI, Request

def not_found_error(request: Request, exc: HTTPException):
    return RedirectResponse('https://example.com/404')

exception_handlers = {404: not_found_error}
app = FastAPI(exception_handlers=exception_handlers)</code>

Hinweis: In diesen Beispielen wird eine Umleitung durchgeführt. Sie können jedoch nach Bedarf jede benutzerdefinierte Antwort, HTMLResponse oder Jinja2 TemplateResponse zurückgeben.

Arbeitsbeispiel

Betrachten Sie das folgende Beispiel:

app.py

<code class="python">from fastapi.responses import RedirectResponse
from fastapi.exceptions import HTTPException
from fastapi import Request

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

async def internal_error(request: Request, exc: HTTPException):
    return RedirectResponse('https://example.com/500')

exception_handlers = {404: not_found_error, 500: internal_error}
app = FastAPI(exception_handlers=exception_handlers)</code>

404.html Vorlage

<code class="html"><!DOCTYPE html>
<html>
<title>404 Not Found</title>
<body>
<h1>Not Found</h1>
<p>The requested resource could not be found.</p>
</body>
</html></code>

500.html Vorlage

<code class="html"><!DOCTYPE html>
<html>
<title>500 Internal Server Error</title>
<body>
<h1>Internal Server Error</h1>
<p>An internal error has occurred. Please try again later.</p>
</body>
</html></code>

Das obige ist der detaillierte Inhalt vonWie gehe ich mit benutzerdefinierten „404 Not Found“-Antworten in FastAPI um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn