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

Comment personnaliser les réponses aux erreurs dans FastAPI ?

DDD
Libérer: 2024-10-21 06:32:29
original
965 Les gens l'ont consulté

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

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

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal