FastAPI expliqué en 5 minutes ou moins



FastAPI, un cadre de développement Python conçu pour la création d’interfaces de programmation d’applications (API) Web, a connu un essor remarquable ces dernières années.

Les API, piliers de l’architecture moderne, permettent une conception modulaire et un découplage des applications. Cette approche favorise un développement rapide et une maintenance simplifiée.

Par conséquent, acquérir des compétences dans FastAPI représente un investissement judicieux si vous envisagez d’utiliser Python pour le développement d’applications Web. Cet article vous guidera à travers les fondements de FastAPI.

Qu’est-ce que FastAPI ?

FastAPI est un cadre Web basé sur Python qui a suscité un intérêt croissant. Il partage une approche de développement similaire à Flask, qui était autrefois le choix privilégié pour ceux qui se lançaient dans le développement Web avec Python.

FastAPI se distingue par sa facilité d’utilisation et sa documentation claire et accessible. Des géants de la technologie comme Microsoft, Netflix et Uber l’ont adopté.

FastAPI offre toutes les fonctionnalités essentielles attendues d’un outil de construction d’API, tout en allant au-delà. Il permet, par exemple, de monter WSGI à l’envers, une capacité souvent méconnue des utilisateurs.

L’objectif principal de FastAPI est la création de points de terminaison d’API. Cela peut être accompli aussi simplement qu’en renvoyant des données de dictionnaires Python en JSON, ou en exploitant l’interface utilisateur interactive Swagger d’OpenAPI.

Cependant, FastAPI ne se limite pas aux API. Il peut être utilisé pour presque toutes les tâches accomplies par un cadre Web, de la diffusion de pages Web avec le moteur de template Jinja2 à la prise en charge d’applications alimentées par WebSockets.

Voici les avantages clés de FastAPI :

  • FastAPI permet de valider le type de données défini par le développeur, même lors de l’utilisation de requêtes JSON imbriquées.
  • Il offre une fonction de saisie semi-automatique, ce qui accélère le développement et réduit l’effort nécessaire.
  • Il est compatible avec les standards OpenAPI et JSON Schema, facilitant la validation et l’annotation de documents JSON.
  • FastAPI permet de créer rapidement des API GraphQL grâce à la bibliothèque Python graphene-python.
  • FastAPI prend en charge OAuth 2.0 et les fournisseurs d’authentification externes.

Voici les inconvénients de FastAPI :

  • FastAPI étant un cadre récent, sa communauté et le matériel pédagogique sont moins importants que pour des frameworks plus établis.
  • La nécessité de relier tous les composants peut conduire à un fichier principal volumineux et potentiellement désordonné.

Fonctionnalités distinctives de FastAPI

Les caractéristiques suivantes distinguent FastAPI comme l’un des cadres Web Python les plus en vogue actuellement.

  • Haute performance : FastAPI se distingue par des performances supérieures aux autres cadres Python. Son approche axée sur la vitesse, basée sur les fonctionnalités de Starlette, en fait un choix de premier plan pour la création d’API et la production de code prêt à l’emploi.
  • Développement rapide : les développeurs bénéficient de codes prêts à l’emploi, ce qui élimine la nécessité de créer de nouvelles structures. Cela accélère le processus de développement de 20 à 30 %. FastAPI s’appuie sur Starlette et offre de nombreuses fonctionnalités utiles pour la validation et la sérialisation des données. La présence de tous les composants nécessaires réduit le temps de codage.
  • Réduction des erreurs : la fonction de saisie semi-automatique, qui insère automatiquement la majeure partie du code, minimise les risques d’erreurs et améliore la qualité du résultat.
  • Facile à comprendre : FastAPI n’introduit aucune complexité. Il s’agit d’une adaptation de Python 3.6, sans nouvelles syntaxes. Toute personne familiarisée avec Python peut utiliser ce framework.
  • Effort minimal : FastAPI génère automatiquement la documentation OpenAPI avec un minimum d’effort de la part du développeur. Cette documentation, accessible via le répertoire application/doc, comprend des informations détaillées sur les points de terminaison, les codes de retour, les paramètres de réponse et autres détails pertinents.
  • Prise en charge par l’éditeur : tous les composants du framework sont conçus en pensant à la saisie semi-automatique. Cela facilite le développement et permet de produire du code rapidement. La documentation interactive permet également de tester le code directement dans le navigateur.
  • Conformité aux normes ouvertes : la compatibilité avec OpenAPI (anciennement Swagger) pour la création d’API constitue un atout majeur.

Installation de FastAPI

Voici les étapes simples pour installer FastAPI sous Linux ou Windows.

#1. Installation de FastAPI sous Linux

Installez Python 3 sur Linux à l’aide de la commande suivante :

sudo apt install python3

Installez pip sur Linux à l’aide de cette commande :

sudo apt install python3-pip

Ensuite, installez FastAPI sur Linux :

pip install fastapi

Vous aurez également besoin d’un serveur ASGI. Installez uvicorn à l’aide de pip :

pip install "uvicorn[standard]"

#2. Installation de FastAPI sous Windows

Installez Python 3 sur Windows via le Microsoft Store. Cela installera également pip.

Ensuite, installez FastAPI sur Windows :

pip install fastapi

Enfin, installez le serveur ASGI uvicorn :

pip install "uvicorn[standard]"

Utilisations modernes de FastAPI

Voici quelques applications modernes de FastAPI :

Documentation automatisée

La documentation des types d’API et des points de terminaison est cruciale. L’intégration d’OpenAPI, Swagger UI et ReDoc dans FastAPI résout ce problème. Cela permet de se concentrer sur le code sans avoir à configurer des outils distincts.

Typage statique Python

FastAPI utilise les déclarations de type de Python 3.6 (via Pydantic), ce qui permet de spécifier le type d’une variable. Cette fonctionnalité est exploitée pour offrir une excellente expérience aux développeurs grâce à la saisie semi-automatique.

Validation

Pydantic permet d’intégrer directement la validation dans ce framework, en permettant la validation des types Python standards et des champs personnalisés.

Sécurité et authentification

La sécurité est une partie essentielle de toute API. FastAPI prend en charge HTTP Basic, les jetons OAuth2 (JWT) et les clés d’API dans les en-têtes, évitant ainsi la répétition de code.

Traitement asynchrone

La prise en charge native des points de terminaison asynchrones dans FastAPI simplifie le code et le rend plus efficace, ce qui représente un avantage considérable par rapport à Flask.

FastAPI vs Flask : Principales différences

Différences d’utilisation

FastAPI se présente comme une plateforme complète, offrant tous les outils nécessaires à la création d’API. Flask, en revanche, est un micro-cadre qui ne propose pas les mêmes fonctionnalités. Flask peut être utile pour prototyper une idée ou créer rapidement une application Web simple.

Flask et FastAPI se distinguent par leur usage. Flask est adapté au prototypage, tandis que FastAPI excelle dans la création d’API. Il permet de créer rapidement un serveur principal sans expertise de codage approfondie.

Sites Web et applications Web à petite échelle

FastAPI est facile à utiliser, léger et adapté au développement Web et d’applications à petite échelle. Il intègre une couche de mappage objet-relationnel (ORM) qui gère les objets de données au sein de l’application, facilitant leur accès via le codage.

La couche ORM suit les bases de données et évite la nécessité de les mettre à jour manuellement lors de l’ajout, de la modification ou de la suppression d’informations.

WSGI contre ASGI

Une différence fondamentale réside dans l’interface standard utilisée : WSGI pour Flask et ASGI pour FastAPI. WSGI traite les requêtes de manière synchrone, une par une. Une requête doit être terminée avant de pouvoir entamer la suivante.

ASGI gère les requêtes de manière asynchrone, permettant un traitement simultané des tâches sans qu’elles n’aient à attendre les autres.

Communauté

La communauté de Flask est plus ancienne et plus établie que celle de FastAPI. Cela se traduit par une documentation abondante et une aide externe plus accessible. FastAPI, étant plus récent, a une communauté en croissance, avec une documentation suffisante mais moins d’aide externe.

Voici un tableau récapitulatif pour comparer FastAPI et Flask :

FastAPI Flask
Validation de données intégrée Pas de validation de données intégrée
Prise en charge des tâches asynchrones Pas de prise en charge des tâches asynchrones
Implémente les spécifications ASGI Prend en charge les applications WSGI
Documentation automatique Documentation manuelle
Messages d’erreur en JSON Messages d’erreur en HTML
Petite communauté Communauté vaste

FastAPI ou Flask : quel framework choisir ?

FastAPI et Flask permettent de configurer rapidement des serveurs Web Python et des applications de science des données. Les deux nécessitent un effort de déploiement similaire, mais quel framework est le plus adapté à votre prochain projet ?

FastAPI est un excellent choix lorsque la vitesse et les performances sont prioritaires, par exemple, lors de la construction d’un réseau de diffusion de contenu avec un trafic important. Le framework est rapidement opérationnel. Son modèle de projet permet de gagner du temps.

FastAPI est plus adapté que Flask pour la création d’API, en particulier pour les microservices. Flask reste le meilleur choix si votre infrastructure et vos outils sont déjà basés sur ce framework.

Conclusion

FastAPI se distingue par sa vitesse et ses performances. Il est idéal pour construire des réseaux de diffusion de contenu avec un trafic important. Son modèle innovant et sa structure de projet vous feront gagner du temps.

Flask est un bon choix pour la création d’API, en particulier les microservices. Si vous avez déjà une expertise avec Flask, il peut être plus approprié. FastAPI, en général, est une option plus performante.

N’hésitez pas à explorer d’autres frameworks Python pour le développement d’API.