Maison  >  Article  >  développement back-end  >  Comment personnaliser la réponse d'erreur 422 de FastAPI en 401 pour les en-têtes manquants ?

Comment personnaliser la réponse d'erreur 422 de FastAPI en 401 pour les en-têtes manquants ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-20 12:36:13269parcourir

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

Personnalisation de la réponse aux erreurs pour des routes spécifiques dans FastAPI

Présentation du problème

Dans FastAPI, les points de terminaison peuvent nécessiter un en-tête spécifique. Lorsque cet en-tête est absent d'une requête client, le serveur renvoie un code d'erreur de 422 Unprocessable Entity. Cependant, dans certains scénarios, il peut être souhaitable de personnaliser cette réponse d'erreur sur 401 non autorisé.

Options de solution

Option 1 : en-tête facultatif avec gestion personnalisée des erreurs

Utilisez Header(Aucun) pour indiquer que l'en-tête est facultatif. Dans le corps de la fonction, recherchez Aucun et déclenchez une erreur 401 non autorisée si l'en-tête n'est pas présent.

Option 2 : Remplacer le gestionnaire d'exceptions

Remplacer le gestionnaire d'exceptions RequestValidationError . Vérifiez si l'erreur est liée à l'en-tête personnalisé et renvoyez une réponse d'erreur personnalisée (par exemple, 401 non autorisé) en conséquence.

Option 3 : sous-application avec gestion personnalisée des exceptions

Créez une sous-application et montez-la sur l'application principale. Remplacez le gestionnaire d'exceptions pour RequestValidationError dans la sous-application pour gérer les erreurs pour les routes dans cette sous-application uniquement.

Option 4 : APIRouter avec classe APIRoute personnalisée

Utiliser une classe APIRoute personnalisée pour gérer la gestion des exceptions. Dans cette classe, définissez un gestionnaire de route personnalisé qui intercepte RequestValidationError et renvoie une réponse d'erreur personnalisée.

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!

Déclaration:
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