Chaque fois que l’utilisateur place une requête HTTP pour l’un d’eux, React construit la requête avec les paramètres nécessaires et l’envoie au serveur back-end. Dans le back-end, FastAPI route la requête vers la méthode appropriée et appelle la méthode de base de données appropriée pour effectuer l’opération. Une fois que la requête est exécutée avec succès au niveau de la base de données, la réponse est reçue et traitée par le back end, puis envoyée au front-end React. React affiche ensuite le message de réussite ou d'échec à l'utilisateur.
Front-end React
La bibliothèque React JS accélère le développement d’applications front-end prêtes pour la production en fournissant de nombreux utilitaires et composants courants prêts à l’emploi et qui peuvent être réutilisés. Dans le cadre de la pile FARM, React est utilisé pour envoyer des requêtes HTTP au back end et afficher la réponse du back end au front-end.
React JS utilise un IoT virtuel, qui met à jour uniquement les parties modifiées de l’application, et non l’intégralité de l’arborescence. L’application est ainsi rapide. Une autre fonctionnalité notable est la syntaxe JSX (JavaScript Extension), grâce à laquelle vous pouvez ajouter des éléments JavaScript dans des identifiers HTML. Ainsi, toute modification de la valeur de l’élément est immédiatement répercutée sans qu’il soit nécessaire d’actualiser ou de redémarrer le serveur.
Prenons l’exemple d’une simple requête HTTP effectuée par un utilisateur pour mettre à jour son numéro de téléphone portable. React stocke les données saisies par l’utilisateur à l’aide d’un simple crochet (useState).
Ces données seront envoyées à la couche d'application à l'aide de la requête PUT au format JSON.
Comme la pile FARM prend en charge la programmation asynchrone, nous pouvons utiliser la bibliothèque JS axios qui est basée sur les promesses et prend en charge tous les navigateurs. En utilisant axios, nous pouvons faire abstraction de la complexité de la création et de la configuration des requêtes HTTP.
Bien que React accepte de nombreux formats de données, le format JSON est préféré car il est léger et utilise moins de bande passante.
FastAPI
FastAPI est un framework Web asynchrone basé sur Python. Dans la pile FARM, l’API rapide agit comme un intergiciel qui traite les requêtes HTTP reçues de l’application React et renvoie la réponse. FastAPI s’exécute sur le serveur uvicorn, qui est basé sur la norme de serveur ASGI pour les serveurs Web asynchrones.
L'API rapide exploite des opérations d'E/S non bloquantes pour prendre en charge plusieurs chargements simultanés via des coroutines. Par exemple, en cas de requêtes multiples pour mettre à jour un numéro de téléphone portable sur un portail en ligne, au lieu de bloquer les ressources, FastAPI créera une coroutine, où elle pourra traiter plusieurs requêtes en parallèle.
Supposons qu'il y ait cinq demandes simultanées de mise à jour d'un numéro de téléphone portable. Si chacun d'eux devait être traité un par un, ce serait une perte de temps et de CPU. En utilisant le mot-clé async de la bibliothèque asyncio de Python, nous pouvons commencer à traiter les requêtes en parallèle. Supposons que la première requête attend les résultats de l’extraction (recherche du numéro de téléphone portable à mettre à jour). Ce temps d'attente peut être utilisé pour lancer la deuxième requête, et ainsi de suite. De cette façon, chaque requête est totalement indépendante des autres et il n’y a pas de blocage ni d’attente.
Dans la coroutine ci-dessus, main() est le point d’entrée du programme, après lequel chaque requête est traitée de manière asynchrone en tant que coroutine distincte.
Le framework Web fourni par FastAPI fournit :
- Prise en charge complète de la programmation asynchrone, ce qui offre des performances élevées.
- L'injection de dépendances, c'est-à-dire la déclaration des dépendances du projet et leur intégration lors de l'exécution.
- Validation et sérialisation des données à l’aide de la bibliothèque pydantic.
- Programmation asynchrone à l’aide de la bibliothèque asyncio python.
- Documentation API automatique pour les points de terminaison des API à l'aide de Swagger.
- Suggestion de type et annotations
Nous pouvons utiliser les décorateurs Python @app.get, @app.put, etc.) pour définir les requêtes HTTP et les chemins de routage.
Ensuite, vous pouvez accéder aux données d'entrée en utilisant les paramètres de chemin ou de Requête de la requête. L'utilisation de la bibliothèque pydantic se chargera de la validation des données.
Vous pouvez ensuite créer la fonction asynchrone qui met à jour le numéro de mobile dans la collection de bases de données MongoDB :
Dans un cas réel, vous souhaiterez probablement mettre à jour le numéro de téléphone mobile en fonction de certains critères, comme un customer_id. Dans ce cas, vous pouvez ajouter un paramètre de chemin dans le point de terminaison FastAPI (URL de routage) :
La fonction asynchrone de mise à jour du numéro de mobile prendra le customer_id et le numéro de mobile à mettre à jour, en tant que paramètre :
Le « résultat » est un document BSON, qui est automatiquement converti en dictionnaire Python par le moteur du pilote asynchrone. FastAPI la convertit ensuite en une réponse JSON.
Vous pouvez également construire une réponse personnalisée en fonction du résultat, dans le code FastAPI.
L’application React utilise des crochets pour définir un état variable, il vous suffit donc de définir la réponse dans la variable et React l’affichera sur la page d’accueil :
FastAPI utilise les dépendances pour fournir un support intégré pour la gestion des autorisations et le contrôle d'accès basé sur les rôles, par exemple, l'authentification d'un utilisateur ou l'autorisation d'accès à un itinéraire.
Interface de passerelle de serveur asynchrone (ASGI)
L'ASGI fournit des spécifications pour créer des applications et des serveurs asynchrones en Python. Cela permet aux applications d’effectuer des opérations d’E/S telles que des requêtes de base de données ou des demandes réseau sans bloquer les autres opérations. ASGI est conçu pour traiter les connexions de longue durée en plus de la requête et de la réponse HTTP habituelles. Cette fonctionnalité les rend utiles pour les applications en temps réel, où une communication bidirectionnelle entre le client et le serveur est nécessaire.
Serveur web Uvicorn
Uvicorn est un serveur Web asynchrone basé sur les spécifications ASGI. Il offre des performances élevées et est parfaitement adapté pour traiter efficacement des charges d'application élevées. Les développeurs Python qui utilisent l’API FastAPI peuvent utiliser le serveur uvicorn pour déployer et gérer leurs applications. Uvicorn prend également en charge les prises Web. FastAPI est compatible avec quelques autres serveurs, comme hypercorn et Quart, mais uvicorn est préféré en raison de ses performances et de sa stabilité.
Pilote asynchrone pour le moteur
est un pilote asynchrone permettant de connecter FastAPI (Python) et MongoDB. Il est similaire au pilote pymongo mais pour les applications asynchrones. Le moteur fonctionne également avec la version communauté ou entreprise du serveur MongoDB. Pour en savoir plus sur moteur, consultez la page de documentation.
MongoDB est la couche de données qui stocke et récupère les données selon les besoins de l'application.
MongoDB est une base de données de documents qui stocke les données dans un format de type JSON connu sous le nom de BSON (Binary JavaScript Object Notation). Grâce à son document model, MongoDB offre une grande flexibilité dans le stockage des données et s’adapte facilement à toute modification de schéma.
Les bases de données MongoDB sont disponibles en différents modèles : la base de données MongoDB enterprise, la base de données MongoDB community et la base de données cloud (Atlas). Avec MongoDB Atlas, vous n'avez rien besoin d'installer. Il vous suffit de créer un compte gratuit et vous pourrez créer un cluster.
MongoDB offre des options de modélisation des données efficaces pour optimiser les performances tout en préservant la cohérence et la flexibilité des données. Par exemple, pour créer des modèles de données pour votre application de pile FARM, vous pouvez définir la charge de travail et identifier les différents types de relations entre les entités principales : une à un, un à plusieurs ou plusieurs à plusieurs. Sur cette base, vous pouvez décider de la structure de votre document. MongoDB suit une règle simple selon laquelle les données auxquelles on accède ensemble doivent être stockées ensemble. Vous pouvez choisir d’intégrer tous les détails pertinents d’une entité dans un seul document ou de normaliser les données et de les référencer à l’aide d’identificateurs (comme dans une relational database).
MongoDB Atlas est une plateforme de développement de données sur le cloud qui offre des fonctionnalités complètes pour gérer les applications modernes - par exemple, une haute disponibilité et une tolérance aux pannes intégrées, une sauvegarde et une restauration automatisées, une évolutivité verticale et horizontale, un provisionnement automatisé des serveurs, la configuration et les correctifs.
Le riche framework d'agrégation de MongoDB associé aux vastes bibliothèques scientifiques de Python sont les mieux adaptés aux cas d'utilisation actuels de l'IA et de l'apprentissage automatique, tels que la détection des fraudes, l'analyse des données en temps réel, les recommandations aux clients ciblées, l'analyse du comportement des utilisateurs, etc. L’utilisation de MongoDB Atlas vous donne accès à des fonctionnalités supplémentaires telles que Atlas Search, MongoDB Charts, App Services, le connecteur d’outils BI, la data federation, le traitement des flux, etc.
Pour créer une connexion MongoDB à partir du back-end FastAPI, il vous suffit de définir l'URL, puis d'ouvrir la collection de bases de données :
Une fois que vous avez établi la connexion et obtenu la base de données, vous pouvez les utiliser pour effectuer des opérations CRUD en utilisant les méthodes appropriées - par exemple, la méthode update_one() que nous avons utilisée dans la section FastAPI.
Vous pouvez créer une application FARM pile complète à l'aide de notre application Todo pour obtenir des conseils sur le code de bout en bout et la configuration requis pour construire votre application.
Générateur d'applications Full Stack FastAPI pour les développeurs Python
MongoDB fournit le générateur d'applications Full Stack FastAPI pour les développeurs Python. Auparavant, les développeurs Python devaient intégrer manuellement des composants tels que l'authentification, les tests et l'intégration dans l'application principale. Le générateur d’applications MongoDB Full Stack FastAPI fournit un squelette d’application bien structuré, ce qui simplifie la configuration initiale du projet. Voici quelques-unes des principales fonctionnalités du générateur d'applications :
- Une pile d'applications web complète en intégrant des composants front-end et back-end.
- Un système d'authentification intégré.
- Outils opérationnels et de suivi.
Pile FARM et pile MERN
Les piles FARM et MERN utilisent toutes deux React et MongoDB, qui offrent une flexibilité et des performances élevées. La différence réside dans l’utilisation de Node.js par rapport à FastAPI, et le choix de l’une des deux piles dépend de votre cas d’utilisation professionnel ou de vos préférences personnelles.
- La pile MERN a une courbe d’apprentissage plus courte, car un développeur doit seulement apprendre et écrire du code JavaScript pour le back end et le front-end, tandis que pour la pile FARM, il doit également apprendre à utiliser Python. Enfin, la pile MERN offre une expérience unifiée, ainsi qu’une meilleure lisibilité et maintenabilité du code.
- Node.js bénéficie du plus grand soutien de la communauté et dispose d’une documentation abondante pour un grand nombre de cas d’utilisation et de domaines.
Cela dit, FastAPI obtient de bien meilleurs résultats en matière d’analyse des données et de science des données :
- Python dispose d'un vaste écosystème de bibliothèques avancées pour les tâches de science des données et d'apprentissage automatique, ce qui facilite l'ajout de pipelines d'analyse et de traitement des données dans les applications Web. Bien que Node.js prennent en charge ces bibliothèques, elles ne sont pas aussi exhaustives que les bibliothèques Python.
- La conception intuitive d’API de FastAPI, la génération automatique de documentation OpenAPI et la prise en charge intégrée de la validation des données simplifient le développement d’API et la rendent accessible aux développeurs de tous niveaux de compétence. Node.js peut être difficile à apprendre pour un débutant en raison des concepts de programmation basé sur le rappel et de la complexité de la gestion des dépendances.
- Alors que Python est strictement typé, JavaScript est faiblement typé, ce qui peut entraîner des erreurs d’exécution.
Cas d'usage de la pile FARM
La pile FARM convient à un large éventail de cas d'utilisation dans divers domaines et secteurs, dont certains sont énumérés ci-dessous :
- Création de sites web et de pages web dynamiques et interactifs : Sur le front end, React offre une expérience interactive et en temps réel aux utilisateurs, tandis que le back-end FastAPI vous permet de créer des API REST robustes pour traiter l’authentification, l’autorisation et les transactions. MongoDB, grâce à son schéma flexible, s'adapte facilement à l'évolution des exigences des applications et aux différentes structures de données, par exemple, les plates-formes de commerce électronique et les systèmes de gestion de contenu.
- IA et analyse des données : en utilisant la puissance du framework d’agrégation MongoDB et des bibliothèques de science des données Python, la pile FARM fournit une base solide aux développeurs pour créer des systèmes de traitement des données, d’analyse en temps réel, de dérivée d’informations pratiques et de génération de rapports visuels. L’interface React peut être utilisée pour les tableaux de bord interactifs et l’exploration des données.
- Applications IoT (Internet of Things) : en utilisant React, les développeurs peuvent créer une interface fluide pour la surveillance et le contrôle à distance. FastAPI traite des services tels que l'ingestion de données, la communication avec les appareils et le routage. MongoDB peut stocker les données de capteur, les métadonnées et les journaux et peut être utilisé pour l'analyse et la détection d'anomalies.
- Applications de chat : les capacités de rendu en temps réel de React permettent une communication fluide et en temps réel entre l'agent de chat et les utilisateurs. Les capacités de routage de FastAPI et la prise en charge de websocket permettent de traiter les requêtes HTTP pour l’authentification, la messagerie en temps réel et la communication BIdirectionnelle. L'architecture flexible et évolutive de MongoDB le rend parfaitement adapté au traitement des données de chat dynamiques et évolutives.
Synthèse
La pile FARM est une pile technologique prometteuse et offre une puissance de fonctionnalités pour créer des applications hautement flexibles, évolutives et performantes. Dans les jours à venir, vous pouvez vous attendre à plus d'innovations et de progrès technologiques, l'accent étant mis sur l'amélioration de l'expérience et de la productivité des développeurs, l'automatisation et l'intégration avec d'autres technologies afin de faciliter les nouveaux cas d'utilisation et les nouvelles applications. Pour commencer à utiliser la pile FARM, regardez le tutoriel MongoDB.live.