Maison >développement back-end >Tutoriel Python >Comment personnaliser les réponses aux erreurs de validation dans FastAPI ?

Comment personnaliser les réponses aux erreurs de validation dans FastAPI ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-21 06:23:30821parcourir

How to Customize Error Responses for Validation Errors in FastAPI?

Personnalisation des réponses d'erreur dans FastAPI

Lors de la réception de requêtes contenant des données non valides ou inattendues, il est souvent souhaitable de renvoyer une réponse d'erreur personnalisée plutôt que la réponse FastAPI par défaut. Ce guide explique comment gérer et personnaliser les réponses d'erreur dans FastAPI.

Plus précisément, le problème décrit concerne la réception de données supplémentaires dans un corps de requête, ce qui entraîne une erreur 422 Unprocessable Entity avec des détails d'erreur par défaut. L'objectif est de gérer cette erreur avec élégance et de renvoyer une réponse personnalisée, telle que :

<code class="json">{
  "error": {
    "message": "Invalid JSON body"
  },
  "status": 0
}</code>

Pour personnaliser les réponses d'erreur, FastAPI permet de remplacer le gestionnaire d'exceptions pour les erreurs de validation. Les étapes suivantes expliquent comment y parvenir :

  1. Importer les bibliothèques nécessaires :

    from fastapi import FastAPI, Body, Request, status
    from fastapi.exceptions import RequestValidationError
    from fastapi.responses import JSONResponse
  2. Définir un gestionnaire d'exceptions personnalisé :

    @app.exception_handler(RequestValidationError)
    async def validation_exception_handler(request: Request, exc: RequestValidationError):
        return JSONResponse(
            status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
            content={
                "detail": exc.errors(),  # optionally include the errors
                "body": exc.body,
                "custom msg": "Your error message"
            }
        )
  3. Enregistrez le gestionnaire personnalisé auprès de l'application FastAPI :

    app = FastAPI()
  4. Testez le gestionnaire d'erreurs personnalisé :
    Envoyez une requête avec des données non valides (par exemple, des données supplémentaires dans le corps de la requête) pour déclencher le gestionnaire d'exceptions.

Alternative Gestionnaire :

Alternativement, une PlainTextResponse peut être utilisée pour renvoyer un message simple :

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

En suivant ces étapes, vous pouvez gérer les erreurs de validation avec élégance et personnaliser les réponses d'erreur renvoyées. par votre application FastAPI.

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