Maison  >  Article  >  développement back-end  >  Comment gérer les réponses personnalisées 404 introuvables dans FastAPI ?

Comment gérer les réponses personnalisées 404 introuvables dans FastAPI ?

DDD
DDDoriginal
2024-10-24 02:06:29910parcourir

How to Handle Custom 404 Not Found Responses in FastAPI?

Comment renvoyer une page 404 introuvable personnalisée à l'aide de FastAPI ?

Lorsque vous rencontrez un code d'état de réponse 404, une page d'erreur par défaut est généralement affiché dans les applications Web. Cependant, vous souhaiterez peut-être fournir une page 404 personnalisée pour une expérience plus personnalisée. Grâce à FastAPI, la mise en œuvre d'une page 404 personnalisée est simple.

Gestionnaire d'exceptions personnalisé

Une méthode efficace consiste à exploiter un gestionnaire d'exceptions personnalisé. En spécifiant le code d'état que vous souhaitez gérer, vous pouvez créer un gestionnaire ciblé.

<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>

Paramètre des gestionnaires d'exceptions

Vous pouvez également utiliser le paramètre exception_handlers de la classe FastAPI.

<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>

Remarque : Dans ces exemples, une redirection est effectuée. Cependant, vous pouvez renvoyer n'importe quelle réponse personnalisée, réponse HTML ou réponse modèle Jinja2 selon vos besoins.

Exemple de travail

Considérez l'exemple suivant :

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 Modèle

<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.htmlModèle

<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>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn