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

Mary-Kate Olsen
Libérer: 2024-10-21 06:23:30
original
695 Les gens l'ont consulté

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>
Copier après la connexion

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
    Copier après la connexion
  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"
            }
        )
    Copier après la connexion
  3. Enregistrez le gestionnaire personnalisé auprès de l'application FastAPI :

    app = FastAPI()
    Copier après la connexion
  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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!