Wie kann man alle Ausnahmen dazu zwingen, eine Fastapi Middleware zu durchlaufen?Python

Python-Programme
Guest
 Wie kann man alle Ausnahmen dazu zwingen, eine Fastapi Middleware zu durchlaufen?

Post by Guest »

Ich schreibe eine App mit Fastapi. Teile meines Codes erhöhen unterschiedliche Ausnahmen, die ich verarbeiten muss. Ich möchte, dass all diese Verarbeitung an einem einzelnen Ort durchgeführt wird (mit unterschiedlichen Blockaden, je nachdem, welche Ausnahme ausgelöst wurde). Ich habe versucht, dies zu tun, indem ich meiner Fastapi-App die folgende (vereinfachte) Middleware hinzufügte: < /p>

Code: Select all

from fastapi import APIRouter, FastAPI, Request, HTTPException, Response, status
from starlette.middleware.base import BaseHTTPMiddleware
from fastapi.responses import JSONResponse

class ExceptionHandlerMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
try:
return await call_next(request)
except HTTPException as e:
return JSONResponse(status_code=e.status_code, content={'message': e.detail})
except Exception as e:
return JSONResponse(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, content={'message': str(e)})

# app creation and config go here....

app.add_middleware(ExceptionHandlerMiddleware)
Das Problem besteht Middleware, da es vor dem Erreichen der Middleware bereits standardmäßig verarbeitet wird). < /p>
Fastapis Dokumentation gibt eine Möglichkeit, das Standardverhalten für bestimmte Ausnahmen zu überschreiben, dies ist jedoch langweilig und nicht skalierbar. Gibt es eine Möglichkeit, alle Ausnahmebehandlung global zu erzwingen, um meine Middleware zu durchlaufen? (Bonuspunkte, wenn jemand einen Weg kennt, dies ohne Dekorateure zu tun, wie eine Anforderung, die ich nicht verwendet habe.)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post