Retrouvez-nous le 14 mai au Google Cloud Summit à l'Accor Arena - Paris !

logo saagie red

Comment développer l’API idéale pour vos projets data ?

Après des mois de travail passés sur un projet data (tel un algorithme de machine learning, par exemple), vous arrivez à obtenir des résultats intéressants. Vous et votre hiérarchie souhaitez donc passer à la phase déploiement.

Pour ce faire, une approche très classique est de développer une API dédiée intégrant le travail que vous avez effectué.

Dans cet article, nous allons voir quel outil utiliser pour développer une API adaptée à un projet data et comment s’en servir.

Combo Python et FastAPI

Plusieurs langages informatiques sont utilisés en data science. Certains sont très spécialisés, comme R, d’autres plus généralistes, comme Python ou Java.

Cependant, Python reste LE langage de programmation le plus utilisé dans ce domaine et présente l’avantage d’être très versatile : il permet aussi bien de mener des analyses de données que de développer des applications.

C’est donc le choix naturel lorsque l’on souhaite développer une API pour un projet data. De plus, de nombreuses librairies externes ont été développées par la communauté Python à cet effet.

Parmi elles, deux retiennent particulièrement l’attention : Flask et FastAPI.

Ce sont deux librairies conçues pour le développement d’applications web. De ces deux options, nous vous recommandons vivement FastAPI pour les raisons suivantes :

Malgré tout, Flask reste une alternative très intéressante, notamment car c’est un projet plus ancien. 

Il existe donc tout un écosystème de librairies utiles et complémentaires à Flask ; de plus, vous n’aurez aucun mal à trouver de l’aide sur internet.

Guide de démarrage de FastAPI

Pour illustrer la simplicité et l’efficacité d’utilisation de FastAPI, voici un guide qui vous permettra de créer une application simple mais fonctionnelle, s’exécutant en local.

Tout d’abord, pour installer FastAPI, exécutez dans votre terminal :

Créer des routes pour votre API

Ensuite, créez un répertoire où vous souhaitez stocker votre code. Dans ce répertoire, créez un fichier main.py et mettez-y le code suivant :

Explications :

NB 1 : par défaut, la valeur retournée par la fonction sera convertie au format JSON par FastAPI, avant d’être envoyée comme réponse à la requête HTTP.

NB 2 : FastAPI supporte le code asynchrone. Si vous êtes familier avec les mots-clés async et await, vous pouvez les utiliser dans votre code.

À partir de là, on a déjà une version minimale et fonctionnelle. Vous pouvez lancer votre API en exécutant la commande suivante dans votre terminal (depuis le répertoire où se trouve main.py) :

Votre API tourne maintenant en local et vous pouvez y accéder dans votre navigateur via l’URL http://127.0.0.1:8000/

Explications :

Déclarer des paramètres pour les routes de votre API

Vous pouvez créer des routes avec des paramètres :

Les deux routes ci-dessus sont équivalentes, les arguments sont simplement déclarés différemment. 

Bien sûr, vous pouvez déclarer plusieurs arguments pour la même route et combiner les deux méthodes précédentes, par exemple : 

route 2 api

Définir des modèles et utiliser la validation automatique

Si vous souhaitez utiliser des paramètres d’entrée plus complexes, il est préférable d’utiliser la méthode HTTP POST et optionnellement, de déclarer un modèle pydantic dédié, comme ci-dessous :

Explications :

Cela indique à FastAPI qu’une requête vers cette route doit contenir les informations telles que définies dans la classe Item. FastAPI s’occupe de vérifier et de valider la requête. Si la structure n’est pas respectée, FastAPI enverra automatiquement un message d’erreur sans que vous n’ayez à le coder.

NB 1 : notez le mot clé Optional dans la classe Item, cela veut dire que cette information peut être absente de la requête sans que FastAPI considère cela comme une erreur.

NB 2 : il existe des mécanismes de validation automatique similaires pour les paramètres déclarés avec la méthode HTTP GET.

Consulter la documentation de votre API générée dynamiquement

Enfin, cerise sur le gâteau, FastAPI génère automatiquement une documentation de votre API à partir de votre code. Cette documentation est accessible via l’URL : http://127.0.0.1:8000/docs

Pour que cette documentation soit la plus complète possible, vous avez tout intérêt à documenter votre code au maximum (docstring, typage…).

 

Comme vous pouvez le constater, nous avons réussi à développer une API fonctionnelle en quelques dizaines de lignes seulement. Bien sûr, la complexité de l’application dépendra aussi de votre projet, mais FastAPI rend très facile la partie purement API (à savoir, déclarer les routes, les paramètres d’entrée ou de sortie…). 

Ce n’est là qu’un aperçu de toutes les possibilités offertes par FastAPI, vous trouverez de nombreux exemples supplémentaires dans la documentation (en anglais).