Écrit par Mohamed S.
Introduction
Un Framework est un ensemble de structures, de modules et de packages qui facilite le développement d’applications ou de systèmes.
Les trois principaux Framework Python les plus utilisés sont Django, Flask et FastAPI, chacun représente ses avantages et ses inconvénients.
Ça peut être utile de mettre en place une API par exemple dans le cas où on a une application web/mobile qui a besoin de consommer des datas de façon standardisé sans avoir à gérer les accès à une base de données.
FastAPI est un Framework web de haute performance, open source. Lancé en 2018, il permet de créer des APIs avec Python à partir de la version 3.6.
Comme son nom l’indique, FastAPI est très rapide et facile à coder, il est très intuitif à l’utilisation, avec des fonctionnalités de complétion et de débogage, il est basé sur le standard ouvert OpenAI et JASON Schéma.
Le principal usage du Framework est la création de Endpoints APIs, principalement pour les applications de Data Science et e-commerce.
Toutefois, FastAPI ne se limite pas à créer des APIs, il est possible de l’utiliser pour n’importe quel usage d’un Framework web. Il a été désigné meilleur Framework open source en 2021.
Prérequis
Pour utiliser FastAPI, vous devez avoir :
- Une base en programmation et une bonne compréhension des concepts de base de langage Python.
- Une connaissance des principes des API REST et des requêtes HTTP.
Installation
Assurez-vous que vous avez bien installé Python.
Dans un seconde temps, un éditeur de texte/IDE est nécessaire, tel que VS Code.
Pour installer FastAPI, vous devez exécuter la commande suivante :
$ pip install fastapi
Vous aurez également besoin d’un serveur web local pour tester vos API. Pour cela Python mis à disposition Uvicorn, qui est un serveur web ASGI (Asynchronous Server Gateway Interface).
Pour installer Uvicorn, vous devez exécuter cette commande :
$ pip install "uvicorn[standard]"
Développement
Dans cet article, nous allons créer une application CRUD avec FastAPI.
Une API REST fonctionne avec des requêtes HTTP, c’est ce protocole qui permet de connecter au serveur, il existe différents types de requêtes HTTP, et chaque requête dépend de l’action que l’on souhaite effectuer.
Les types de requêtes :
- POST : servent à créer un nouvel élément dans la base de données
- GET : servent à récupérer des données (en mode lecture)
- PUT : servent à modifier un élément déjà existant dans la base de données
- DELETE : servent à supprimer des éléments dans la base de données
Création de l’application
Nous allons commencer par la création de notre modèle utilisateur, et ce modèle aura 5 attributs :
id : un identifiant unique
first_name : le prénom de l'utilisateur
last_name : le nom de famille de l'utilisateur
genre : le sexe de l'utilisateur
role : la liste des rôles de l'utilisateur
Ce modèle sera créé dans un nouveau fichier nommé models.py :
Dans le fichier main.py nous allons créer notre base de données de la manière suivante :
Jusqu’ici, nous avons créé une base de données avec 4 utilisateurs, chacun avec des attributs requis.
La ligne du fichier main.py :
app = FastAPI()
permet de créer une instance de FastAPI.
Lecture des éléments de la base de données
Pour créer une route qui récupère les utilisateurs, nous allons créer un décorateur dans le fichier main.py :
Le décorateur
@app.get("api/get_users")
permet de spécifier le chemin URL et l’action HTTP de notre API, et cette fonction fait appel à la méthode GET.
La fonction ‘get_users()‘ sera exécutée chaque fois qu’un utilisateur visitera le chemin URL spécifié par le décorateur.
Pour lancer le serveur d’API et tester la fonction, nous allons exécuter la commande suivante dans le terminal :
$ uvicorn main:app --reload
Uvicorn est le serveur local, il prend en paramètres le nom du fichier : le nom de l’instance FastAPI.
Dans cet exemple, le nom du fichier est : main, et le nom de l’instance est app.
L’option ‘–reload‘ indique au serveur de se recharger automatiquement lorsque une modification est apportée.
Quand nous exécutons la commande, si tout se passe bien nous allons avoir quelque chose comme ceci dans le terminal :
Nous allons retenir l’URL du localhost et le port 8000, il nous servira d’afficher les résultats de l’API.
FastAPI en plus de mettre en place rapidement et facilement une API, il génère automatiquement une documentation de l’API, cette documentation est basé sur l’interface utilisateur Swagger, pour y accéder on rajoute juste ‘/docs’ à notre URL.
127.0.0.1:8000/docs
Nous allons exécuter l’endpoint qui représente la récupération des utilisateurs, nous allons avoir ce résultat qui regroupe les utilisateurs.
Création de nouveaux éléments dans la base de données
Nous allons créer un endpoint dans le fichier main.py, qui permettra de créer de nouveaux éléments et de les enregistrer en base de données.
Dans cette fonction nous avons utilisé l’action HTTP POST, qui permet la création en base de données.
L’interface du Swagger après avoir ajouté le nouvel élément ressemblera à l’image suivante :
L’utilisateur toto titi a été bien ajouté en base de données.
Suppression d’un élément de la base de données
Etant donné que nous créons une application CRUD, l’application doit avoir la possibilité de supprimer une ressource existante.
Pour cela, nous allons créer un endpoint toujours dans le fichier main.py, qui permettra la suppression :
Dans le décorateur, nous avons utilisé l’action HTTP DELETE, qui permet la suppression en base de données.
La fonction nécessitera un id à supprimer, si l’id de l’utilisateur est introuvable un message d’erreur sera renvoyé, c’est le cas dans l’image suivante, où nous allons renseigner un id qui n’existe pas dans la base de données :
Et quand nous allons renseigner un bon id qui existe dans la base de données, l’utilisateur qui a cet id ne sera plus dans la base de données, il sera supprimé.
Mettre à jour un élément de la base de données
Dans cette partie, nous allons créer un endpoint qui permettra de mettre à jour un élément qui existe déjà en base de données, en utilisant l’action HTTP PUT.
Toujours dans le fichier main.py, on ajoute la fonction suivante :
Dans les paramètres de la fonction qui met à jour les éléments, l’id est à renseigner obligatoirement, par contre les autres champs sont facultatifs, d’où leurs déclarations : ‘Optional[str] = None‘ qui veut dire que c’est optionnel et que la valeur par défaut est nulle.
Dans le cas ou l’id renseigné est introuvable en base de données, l’API générera une erreur.
Conclusion
Dans cet article, nous avons découvert le cadre FastAPI pour python et constaté à quelle vitesse nous pouvons mettre en place une application alimentée par FastAPI.
Nous avons appris à créer des endpoints (points de terminaison) d’API CRUD, c’est-à-dire créer, lire, mettre à jour et supprimer (Create, Read, Update, Delete) des éléments de base de données.
En conclusion, FastAPI est un framework Python moderne, rapide et efficace pour la création d’API web. Grâce à son utilisation des annotations de type Python, il permet de garantir la validation automatique des données et de générer une documentation interactive, facilitant ainsi le développement et la maintenance des API.
FastAPI représente un excellent choix pour les développeurs cherchant à construire des API robustes, performantes et facile à maintenir.
Références
À lire aussi
Optimiser vos tests avec Cucumber
Comment préparer votre Jira Cloud dès maintenant ?
Replay webinaire IA
