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é.
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!