Utilisateurs de Java, de Golang, de PHP et bien d’autres technologies, il nous arrive de réaliser des applications web en Python et pour ça, nous ne partons pas d’une page blanche mais mettons en place tout une stack technique pour ce faire, petit tour d’horizon de ce que nous utilisons
FastAPI : le framework Web
Longtemps utilisateurs de Flask et durant nos différentes recherches, nous sommes tombés sur un framework simple, prometteur et qui gère surtout l’asynchrone, ce famework, c’est FastAPI.
Grâce à lui, nous arrivons à développer rapidement et proprement des applications Web dont les performances sont tout à fait honnêtes. Les fonctions de base du framework sont là : gestion complète des requêtes entrantes (GET, POST, PATH, PUT avec les query params mais aussi les chemins, tout ce qu’un framework de plus classique gère pour vous. La documentation via Redoc ou SwaggerUI est également gérée. Vous pouvez fortement typer vos variables. La sécurité est également présente, allant de Basic Auth, Oauth2 ou bien le support de votre propre méthode d’authentification
Au passage, il y a également de l’injection de dépendances, que les développeurs PHP et Java utilisent beaucoup.
FastAPI fonctionne beaucoup grâce à Pydantic
Pydantic : le validateur de données en Python
Pydantic est une bibliothèque Python utilisée pour la validation et la gestion des données en utilisant des annotations de type Python. Elle permet de définir des modèles de données en utilisant des classes Python, ce qui facilite la validation des entrées et la gestion des structures de données complexes. Pydantic est souvent utilisé avec FastAPI pour automatiquement générer des schémas de validation pour les requêtes et les réponses API, assurant ainsi que les données échangées sont toujours conformes aux attentes. Grâce à son intégration étroite avec les types Python, il simplifie le développement en réduisant la quantité de code nécessaire pour valider et transformer les données.
La plupart des développeurs Java qui utilisent Jackson, trouveront leur équivalent en Python à travers Pydantic
Ce validateur de données voit son cœur écrit en Rust, celui qui lui donne une performance optimale, autre chose pratique de Pydantic, il est capable de parser du JSON et de sérializer en JSON également, pratique pour l’écriture de vos DTO que vous souhaitez utiliser lors d’un appel d’API externe, comme par exemple en utilisant la librairie HTTPx
HTTPX : un client HTTP moderne et rapide
HTTPX est une bibliothèque HTTP moderne pour Python, conçue pour offrir une interface simple et intuitive pour effectuer des requêtes HTTP. Elle est souvent considérée comme une alternative à la bibliothèque requests
traditionnelle, avec des fonctionnalités supplémentaires et une meilleure performance. HTTPX prend en charge les requêtes asynchrones, ce qui permet de réaliser des opérations réseau non bloquantes, idéales pour les applications nécessitant une haute concurrence. De plus, elle offre une compatibilité avec HTTP/2, améliorant ainsi l’efficacité et la rapidité des communications réseau. Avec son API conviviale et ses capacités avancées, HTTPX est un choix populaire pour les développeurs cherchant à intégrer des fonctionnalités réseau robustes dans leurs applications Python.
Et quand on veut attaquer une base de données ?
Les outils que nous vous présentons sont basés pour beaucoup sur Pydantic comme FastAPI, de ce fait, l’intégration avec Pydantic se fait naturellement.
Pour une base de données relationnelle : PonyORM
PonyORM est une bibliothèque ORM (Object-Relational Mapping) pour Python qui permet de travailler avec des bases de données relationnelles de manière intuitive et expressive. Contrairement à d’autres ORM, PonyORM se distingue par son approche centrée sur l’utilisation d’un langage de requête intégré basé sur Python, ce qui permet d’écrire des requêtes de base de données directement en Python. Cela rend le code plus lisible et réduit la nécessité d’apprendre un langage de requête spécifique comme SQL. PonyORM offre également des fonctionnalités avancées telles que la gestion des transactions, le support des relations complexes entre les entités, et une interface graphique pour visualiser et explorer les données.
Il s’intègre très bien avec FastAPI et si vous souhaitez utiliser un gestionnaire de migrations, vous pouvez le faire au moyen d’Aercih qui est également un développement de l’équipe derrière PonyORM
Pour une base de données NoSQL (type MongoDB): Beanie
Beanie est une bibliothèque ORM asynchrone pour Python, spécialement conçue pour travailler avec MongoDB. Elle permet aux développeurs de définir des modèles de données en utilisant des classes Python, facilitant ainsi l’interaction avec les bases de données NoSQL de manière intuitive et efficace. Beanie tire parti des fonctionnalités asynchrones de Python, ce qui permet d’effectuer des opérations de base de données non bloquantes, idéales pour les applications nécessitant une haute concurrence. Grâce à son approche orientée objet, Beanie simplifie la gestion des documents MongoDB, offrant des fonctionnalités telles que la validation des données, la gestion des relations entre documents, et des requêtes puissantes.
Pour finir
Nous utilisons du Python quand nous avons besoin de vélocité, c’est à dire de pouvoir rapidement construire une application qui tiendra la charge sans trop d’effort. La syntaxe concise de Python, son typage fort, son environnement nous permet de déployer rapidement des applications sans devoir y passer des jours et des jours de développement.