Maison  >  Article  >  développement back-end  >  Comment puis-je créer un point de terminaison FastAPI qui accepte à la fois les données de formulaire et les données JSON ?

Comment puis-je créer un point de terminaison FastAPI qui accepte à la fois les données de formulaire et les données JSON ?

DDD
DDDoriginal
2024-10-27 11:33:02246parcourir

 How Can I Create a FastAPI Endpoint That Accepts Both Form and JSON Data?

Création d'un point de terminaison FastAPI pour une réception flexible des données

Dans FastAPI, il est possible de créer un point de terminaison capable de gérer à la fois les corps de formulaire et de requête JSON.

Option 1 : Déterminer le type de contenu de manière dynamique

  • Créez une fonction de dépendance pour vérifier l'en-tête Content-Type.
  • Analysez le corps de la requête à l'aide des méthodes de Starlette basées sur sur le type de contenu.
  • Utilisez un bloc try-sauf pour détecter les erreurs d'analyse.

Option 2 : Utiliser les paramètres facultatifs

  • Définissez votre point de terminaison avec les paramètres de fichier et de formulaire marqués comme facultatifs.
  • Vérifiez si les paramètres ont des valeurs pour déterminer si les données du formulaire ont été envoyées.
  • Sinon, essayez d'analyser le corps de la requête comme JSON.

Option 3 : points de terminaison séparés avec un middleware

  • Créez des points de terminaison distincts pour JSON et les demandes de données de formulaire.
  • Utiliser un middleware pour vérifier le type de contenu et rediriger la requête vers le point de terminaison approprié.

Option 4 : envisager les requêtes combinées

  • Utiliser le model_validate_json de Pydantic () pour analyser les corps JSON transmis dans les paramètres du formulaire.
  • Autoriser la soumission des données JSON et du formulaire dans une seule requête en rendant les paramètres de point de terminaison facultatifs.

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