Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich die 422-Fehlerantwort von FastAPI auf 401 für fehlende Header anpassen?

Wie kann ich die 422-Fehlerantwort von FastAPI auf 401 für fehlende Header anpassen?

Susan Sarandon
Susan SarandonOriginal
2024-11-20 12:36:13269Durchsuche

How to Customize FastAPI's 422 Error Response to 401 for Missing Headers?

Anpassen der Fehlerreaktion für bestimmte Routen in FastAPI

Problemübersicht

In FastAPI können Endpunkte einen bestimmten Header erfordern. Wenn dieser Header in einer Clientanforderung fehlt, gibt der Server den Fehlercode 422 Unprocessable Entity zurück. In einigen Szenarien kann es jedoch wünschenswert sein, diese Fehlerreaktion an 401 Unauthorized anzupassen.

Lösungsoptionen

Option 1: Optionaler Header mit benutzerdefinierter Fehlerbehandlung

Verwenden Sie Header(None), um anzugeben, dass der Header optional ist. Überprüfen Sie im Funktionskörper, ob „None“ vorhanden ist, und lösen Sie den Fehler „401 Unauthorized“ aus, wenn der Header nicht vorhanden ist.

Option 2: Ausnahmehandler überschreiben

Überschreiben Sie den Ausnahmehandler „RequestValidationError“. . Überprüfen Sie, ob sich der Fehler auf den benutzerdefinierten Header bezieht, und geben Sie entsprechend eine benutzerdefinierte Fehlerantwort (z. B. 401 Unauthorized) zurück.

Option 3: Unteranwendung mit benutzerdefinierter Ausnahmebehandlung

Erstellen Sie eine Unteranwendung und mounten Sie sie in der Hauptanwendung. Überschreiben Sie den Ausnahmehandler für RequestValidationError in der Unteranwendung, um Fehler nur für Routen in dieser Unteranwendung zu behandeln.

Option 4: APIRouter mit benutzerdefinierter APIRoute-Klasse

Verwenden eine benutzerdefinierte APIRoute-Klasse zur Behandlung der Ausnahmebehandlung. Definieren Sie innerhalb dieser Klasse einen benutzerdefinierten Routenhandler, der RequestValidationError abfängt und eine benutzerdefinierte Fehlerantwort zurückgibt.

Das obige ist der detaillierte Inhalt vonWie kann ich die 422-Fehlerantwort von FastAPI auf 401 für fehlende Header 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