Personnalisation des réponses d'erreur dans FastAPI
Lors de la réception de requêtes JSON non valides, FastAPI renvoie généralement une erreur 422 Unprocessable Entity avec des informations détaillées sur le problème. Cependant, il est possible de personnaliser cette réponse d'erreur avec votre propre message et votre propre structure.
Une façon de gérer cela consiste à remplacer le gestionnaire d'exceptions de validation de demande par défaut. Cela peut être fait en implémentant un décorateur de gestionnaire d'exceptions personnalisé. Voici un exemple qui modifie la réponse d'erreur pour inclure un message personnalisé :
<code class="python">from fastapi import FastAPI, Body, Request, status from fastapi.encoders import jsonable_encoder from fastapi.exceptions import RequestValidationError from fastapi.responses import JSONResponse app = FastAPI() @app.exception_handler(RequestValidationError) async def validation_exception_handler(request: Request, exc: RequestValidationError): return JSONResponse( status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, content=jsonable_encoder({ "detail": exc.errors(), # optionally include the errors "body": exc.body, "custom msg": {"Your error message"} }), ) class Demo(BaseModel): content: str = None @app.post("/demo") async def demo_func(d: Demo): return d.content</code>
Ce gestionnaire d'exceptions renverra une réponse JSON avec un message personnalisé, ainsi que les erreurs de validation d'origine et le corps de la demande.
Vous pouvez également personnaliser la réponse d'erreur sous forme de message en texte brut :
<code class="python">from fastapi.responses import PlainTextResponse @app.exception_handler(RequestValidationError) async def validation_exception_handler(request, exc): return PlainTextResponse(str(exc), status_code=422) </code>
Ce gestionnaire affichera une simple chaîne de texte brut représentant le message d'erreur. Ces deux méthodes vous permettent de personnaliser la réponse d'erreur pour fournir un message plus convivial ou plus spécifique au contexte aux utilisateurs de votre API.
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!