Maison  >  Article  >  développement back-end  >  Comment personnaliser les réponses aux erreurs dans FastAPI ?

Comment personnaliser les réponses aux erreurs dans FastAPI ?

DDD
DDDoriginal
2024-10-21 06:32:29851parcourir

How to Customise Error Responses in FastAPI?

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!

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