Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Fehlerantworten in FastAPI anpassen?

Wie kann ich Fehlerantworten in FastAPI anpassen?

DDD
DDDOriginal
2024-10-21 06:32:29851Durchsuche

How to Customise Error Responses in FastAPI?

Anpassen von Fehlerantworten in FastAPI

Beim Empfang ungültiger JSON-Anfragen gibt FastAPI normalerweise den Fehler 422 Unprocessable Entity mit detaillierten Informationen zum Problem zurück. Es ist jedoch möglich, diese Fehlerantwort mit Ihrer eigenen Nachricht und Struktur anzupassen.

Eine Möglichkeit, damit umzugehen, besteht darin, den standardmäßigen Ausnahmehandler für die Anforderungsvalidierung zu überschreiben. Dies kann durch die Implementierung eines benutzerdefinierten Ausnahmehandler-Dekorators erreicht werden. Hier ist ein Beispiel, das die Fehlerantwort so ändert, dass sie eine benutzerdefinierte Nachricht enthält:

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

Dieser Ausnahmehandler gibt eine JSON-Antwort mit einer benutzerdefinierten Nachricht zusammen mit den ursprünglichen Validierungsfehlern und dem Hauptteil der Anforderung zurück.

Alternativ können Sie die Fehlerantwort als Klartextnachricht anpassen:

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

Dieser Handler gibt eine einfache Klartextzeichenfolge aus, die die Fehlermeldung darstellt. Mit beiden Methoden können Sie die Fehlerreaktion anpassen, um Ihren API-Benutzern eine benutzerfreundlichere oder kontextspezifischere Nachricht bereitzustellen.

Das obige ist der detaillierte Inhalt vonWie kann ich Fehlerantworten in FastAPI anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn