🔔

Venez assister au webinar de présentation de nos formations Data le 13 mars à 18h00 !

Je m'inscris à l'événement

API REST : Comment créer ou utiliser une API Restful en Python

Python

Découvre ce qu’est une API Restful, son intérêt et comment on l’utilise. Une REST API peut être utile pour récolter des données précieuses pour une entreprise.

API REST : Comment créer ou utiliser une API Restful en Python

Tu as déjà sans doute entendu parler du terme d’API ! Cela n’est pas étonnant, car c’est l’un des outils les plus pratiques dans le domaine de la Data Analyse. En effet, l’analyse de données repose sur la récolte de données et les API sont l’outil le plus efficace pour les récupérer. Mais les API ont également d’autres utilisations possibles, que tu découvriras dans cet article !

Table des matières

Une API REST : c’est quoi?

Une API REST est un acronyme qui signifie “Application Programming Interface REpresentational State Transfer”. C’est un peu barbare, on te l’accorde. Tout d’abord, on va s’intéresser à la première partie de cet acronyme. 

Une API, ou “Application Programming Interface” (interface de programmation d’application en français) est une structure qui permet de faire communiquer deux applications. Concrètement, si une application 1 a besoin d’entrer en contact avec une application 2,elle va le faire via une API.

Pour rendre cette idée plus concrète, imaginons un cas de figure. 

Tu veux que ton assistant domotique Alexa lance ta série du moment sur Netflix. Une fois l’ordre reçu, il faut que Alexa ait accès à tes données de visionnage sur Netflix, et qu’elle sache quelle est la dernière série que tu as regardée. L’API va jouer le rôle d’intermédiaire entre Alexa et Netflix, qui sont deux applications différentes.

  1. Alexa lance une requête à l’intention de l’API.
  2. L’API transmet la requête à Netflix. 
  3. Netflix retrouve dans sa base de données l’information recherchée (ici, ta série du moment).
  4. L’API transmet la réponse à Alexa.
  5. Alexa sait quelle série elle doit diffuser, et la lance.
Définition d'une API REST

Une API assure la transmission de données entre deux applications, appelées “le client” et “le serveur”.

Elle a donc un double rôle :

  1. Elle transmet la requête du client au serveur.
  2. Elle transmet la réponse du serveur au client.


L’utilisation d’une API rend possible des interconnexions, qui autrement demanderaient un lourd travail de développement. En effet, l’API traduit la requête du client et la réponse du serveur dans un format standardisé, c’est-à-dire compréhensible par tout type d’application. Peu importe comment le client est développé ou quelle technologie le serveur utilise, l’API assure une bonne communication entre les deux applications.

Remarque : Une API n’a pas pour seul intérêt de collecter les données du serveur ! Elle peut servir à plein d’autres choses. 

Avec une API, on peut :

  • Utiliser des fonctionnalités particulières. Par exemple, certains sites de vente en ligne indiquent l’emplacement de leurs magasins physiques avec une carte Google Maps. Pour ce faire, ces sites utilisent l’API mise à disposition par Google Maps.
  • Recueillir des données spécifiques. Par exemple, l’API de Twitter permet de récupérer les tweets et les informations des utilisateurs.
  • Envoyer et mettre à jour des données. Par exemple, une boutique en ligne peut mettre à jour sa base de données via son site internet en utilisant une API qui relie le site à un logiciel de gestion de stocks.

Tu le ressens certainement déjà grâce à ces quelques exemples : les API sont d’une importance énorme dans un monde digital qui est de plus en plus interconnecté. L’utilisation d’APIs est nécessaire dès lors qu’il s’agit de faire collaborer plusieurs applications.

Côté business, les APIs représentent une opportunité énorme pour les entreprises qui souhaitent devenir data-driven ou tirer parti du Big Data. Les données disponibles sur les sites internet et applications web représentent une mine d’or pour qui est capable d’extraire ces données. En apprenant à coder avec Python, tu pourras utiliser ces APIs !

La plupart de ces sites et applications proposent des APIs REST afin de simplifier cette extraction. C’est le cas d'Amazon, Twitter, Google, Facebook, Spotify…

Si tu es curieux de découvrir toutes les APIs qui existent, consulte l’annuaire des APIs

Remarque : sans API, il est également possible d’extraire des données grâce au web-scraping. Encore une bonne raison d’apprendre Python.


Chez Databird, nous proposons une formation à temps plein, à temps partiel ou à ton rythme afin de te rendre opérationnel en entreprise en tant que Data Analyst. Au cours de la formation, tu découvres comment utiliser et créer des API avec Python.

Comment fonctionne une API Restful?

L’architecture REST : Representational State Transfer

Une API est dite “Restful” lorsqu’elle respecte l’architecture REST, c’est-à-dire un ensemble de normes qui régissent la manière dont communique une application avec son environnement, que ce soit un outil tiers ou un autre composant de l'application.


Une API Restful répond à des commandes et à des langages spécifiques. Elle est donc plus simple, plus flexible et plus rapide que les autres types d’APIs. Par conséquent, elle est adaptée à un usage industriel en entreprise. C’est pourquoi les APIs REST sont de loin les plus utilisées.

API REST ET SOAP

Si l’API que tu utilises respecte l’architecture REST, les requêtes se font toujours au format HTTP. Les réponses parviennent au client sous un format standardisé : JSON, XML, HTML, XLT ou YAML.

L’architecture REST présente 3 bénéfices :

  1. Simple et Standardized 

L’API Restful, comme on l’a dit, est simple à utiliser car son format est standardisé.

  1. Scalable et Stateless 

Lorsque l’entreprise grandit, il n’est pas nécessaire de modifier l’API pour qu’elle soit capable de traiter plus de requêtes. De plus, l’API ne garde pas en mémoire les requêtes précédentes. Chaque requête est traitée indépendamment, il faut donc qu’elle soit très précise et compréhensible : une requête ne peut pas faire référence à la requête précédente ! Cela permet à l’API de ne pas surcharger sa mémoire et d’être plus efficace.

  1. High Performance

L’API REST utilise la technologie de mise en cache des données, pour que les données recherchées restent accessibles un certain temps. Ainsi, si le client demande les mêmes données à nouveau, il n’y a pas besoin d’effectuer une nouvelle fois la même requête. Cela permet à l’API d’économiser de l’énergie et de gagner en efficacité lorsque le volume des opérations prend de l’ampleur.


Mais ce n’est pas tout. Les APIs REST peuvent alimenter plusieurs applications. C’est-à-dire qu’une même API peut être utilisée pour envoyer des requêtes et obtenir des réponses depuis plusieurs applications différentes. Cela limite ainsi le nombre d’APIs nécessaires pour l’entreprise.

API REST vers plusieurs clients

De plus, une API Restful peut lancer une requête vers plusieurs serveurs simultanément. Elle fournit ainsi au client une réponse complète, qui comporte des éléments de ces différents serveurs.

API REST vers plusieurs serveurs

Les requêtes HTTP d’une API REST

Comme nous l’avons dit précédemment, les APIs REST fonctionnent avec des requêtes au format HTTP. Il existe quatre types principaux de requêtes, on les appelle les requêtes “CRUD” : Create, Read, Update et Delete.

Requête Méthode HTTP Action demandée et effet
Create POST Ajouter une nouvelle donnée à la base de données du serveur
Read GET Récupérer une information auprès du serveur. Cette donnée sera retournée à un format standardisé (HTML, JSON, etc.)
Update PUT Effectuer une mise à jour dans la base de données du serveur
Delete DELETE Effacer une donnée sur le serveur

Attention à bien distinguer la requête (Create, Read, Update, Delete) et la méthode HTTP associée (Post, Get, Put, Delete). La requête correspond à l’action qu’on souhaite effectuer. La méthode HTTP est l’ordre qu’on va donner à l’API et qu’on va écrire explicitement dans le code.


Reprenons notre exemple d’une boutique en ligne et disons qu’elle vend des chaussures sneakers :

  • Pour ajouter un nouveau modèle de chaussures au stock, il faut utiliser la requête “Create”, en insérant dans cette requête la méthode HTTP “POST”. 
  • Pour savoir combien de “AirMax 90” sont en stock, il faut utiliser la requête “Read”, en insérant dans cette requête la méthode “GET”.
  • Pour mettre à jour le nombre de “Gazelle Adidas” en stock, il faut utiliser la requête “Update”, en insérant dans cette requête la méthode “PUT”.
  • Pour retirer un produit de la base de données, il faut utiliser “Delete”, en insérant dans cette requête la méthode “DELETE” (la plus facile à retenir des quatre!).


Comment utiliser une API REST?

Consulter la documentation

La plupart des APIs REST sont accompagnées d’une documentation qui guide l’utilisateur. Voici par exemple la documentation de l’API de Twitter, celle de l’API de Google Maps

Lorsque l’API est de qualité, une équipe de développeurs s'occupe de rédiger et de mettre à jour la documentation.

En général, la documentation d’une API comporte :

  • La définition des endpoints ;
  • Les paramètres existants ;
  • Des exemples de codes, de requêtes et de réponses.
  • Dans le cas des APIs privées, la manière de s’authentifier (voir plus bas).

Remarque : même le format d’une API Restful est standardisé, il est indispensable de lire la documentation afin de pouvoir construire correctement son API.

Écrire et exécuter une requête HTTP

Une requête HTTP est composée de trois composants :

  1. La méthode HTTP,
  2. Le Endpoint (ou point de terminaison),
  3. Si la méthode le nécessite, des paramètres.

Un Endpoint, en informatique, c’est le point d’arrivée d’un réseau de communication. Dans le cas d’une API, le Endpoint est caractérisé par son URI (Uniform Resource Identifier), c’est-à-dire son adresse sur le serveur. Lorsque l’API lance une requête HTTP, cette requête est destinée à un Endpoint. Donc, dans la requête HTTP, il faut spécifier l’adresse de ce Endpoint grâce à son URI. C’est comme quand tu envoies une lettre, il faut préciser l’adresse exacte du destinataire !


Par exemple, pour récupérer les tweet d’un utilisateur, tu peux utiliser API REST de Twitter ainsi :

Structure d'une API Rest

Pour que ce soit plus clair pour toi, on va reprendre l’exemple de notre boutique de sneakers. 

Si on veut consulter la liste des modèles en stock, on rentre la requête :

GET https://maboutique.fr/api/models 

GET est la méthode HTTP utilisée et /models est l’URI du Endpoint où se situe la liste des modèles disponibles dans la base de données.

Si on veut remplacer le modèle n°1 par des Converse Chuck Taylor, on rentre :

PUT https://maboutique.fr/api/models/1{“modèle” : ”Converse Chuck Taylor”} 

PUT est la méthode HTTP utilisée et /models/1 l’URI. Ce Endpoint ressemble au précédent (/models). Sauf que cette fois, on précise /models/1 parce qu’on veut remplacer le modèle associé à l’ID 1. 

On ajoute en plus les arguments requis par la méthode PUT : la clé “modèle” et le nom du modèle qu’on veut insérer : “Converse Chuck Taylor”.

Authentifier son API

Une API met en contact un client et un serveur. Mais attention, même si l’API est correctement écrite, elle ne fonctionne que si le client est autorisé à réaliser une action ou à obtenir une information qui se trouve sur le serveur. Si ce n’était pas le cas, tu pourrais utiliser l’API de Twitter pour tweeter à la place de n’importe qui !

Par conséquent, il est parfois nécessaire de s’identifier pour pouvoir utiliser une API.

La procédure n’est pas bien différente que lorsque tu rentres ton mot de passe pour te connecter à ta boîte mail : tu es autorisé à consulter ta messagerie car tu t’es authentifié grâce à une information que toi seul connais.

Dans le cas des APIs, il existe plusieurs procédures d’authentification.

Authentification basique

Authentification basique API REST

L’authentification basique utilise un nom d’utilisateur et un mot de passe. Le client passe ces deux valeurs comme argument d’une requête HTTP. 

Si le serveur trouve le nom d’utilisateur dans la liste d’utilisateurs autorisés, et confirme que le mot de passe correspond à ce nom d’utilisateur, alors la session peut commencer. Autrement, le serveur envoie un message d’erreur.

Authentification par clé

Authentification par clé - API REST

Un peu comme lorsqu’on utilise le lien d’une réunion Zoom, il suffit ici de rentrer une chaîne de lettres et de chiffres comme argument d’une requête pour démarrer la session. Cette chaîne de caractères est appelée la clé.

Le développeur peut créer plusieurs clés, qui donnent accès à différentes fonctionnalités de l’API. Cela permet de limiter l’accès à des données sensibles et d’empêcher certaines actions (comme celle d’effacer des comptes).

L’utilisation d’une clé évite que l’utilisateur ait à entrer son mot de passe. Elle protège donc les données personnelles de l’utilisateur.

Authentification avec OAuth2

OAuth2

Malgré son nom un peu barbare, ce protocole de délégation simplifie la vie de toute personne amenée à utiliser l’API régulièrement.

Avec OAuth2, il suffit de s'authentifier une fois (par clé ou par mot de passe). On peut ensuite utiliser l’API librement. OAuth2 prévoit même des procédures de “révocation des utilisateurs” personnalisables.

Manipuler des données acquises par l’API Restful

L’API Restful renvoie des réponses dans un format standardisé, parmi la liste suivante : JSON, HTML, XML, XLT, PHP, mais aussi Python ou parfois même du texte brut !

L’intérêt d’une API REST est de retourner des résultats sous un format qui est directement exploitable. Concrètement, tu n’as pas besoin de reformater les données que tu extrais avec l’API : tu peux les utiliser telles quelles pour ton analyse de données. 

Par exemple, si tu travailles avec le langage Python, l’API REST va te renvoyer des données sous un format que Python prend en charge. Tu peux donc directement créer tes variables Python à partir des données renvoyées par l’API.

Cette homogénéité des données rend possible l’utilisation de plusieurs APIs REST d’affilée. C’est très pratique lorsqu’il y a plus que deux logiciels à faire communiquer. Par exemple, une boutique en ligne peut récupérer les données d’un outil d’analyse de trafic (ex: Google analytics) et la liste de ses commandes sur Shopify pour ensuite présenter tous les résultats dans un outil de datavisualisation comme Google Data Studio. Pour y arriver, on utilise 3 APIs l’une après l’autre.

6 outils pour créer une API REST avec Python

Python est le langage de programmation le plus populaire, parce qu’il est simple à prendre en main et polyvalent. Parmi ses nombreuses utilisations, il est possible de s’en servir pour développer des APIs.

Toutefois, il est fastidieux de développer de A à Z une API avec Python sans aucune aide. C’est pourquoi il existe des frameworks spécifiques qui peuvent grandement te simplifier la tâche !

Créer une API Rest avec Postman

Postman

Postman est une solution pour utiliser et tester les APIs. Il existe sous la forme d’une application que tu peux télécharger sur ton ordinateur. 

Postman permet de rédiger et d’exécuter des requêtes HTTP. Il va t’aider dans la rédaction en décomposant la requête pour la rendre plus lisible. 

La grosse valeur ajoutée de Postman, c’est qu’il stocke un historique des requêtes précédemment utilisées. Tu peux donc facilement réutiliser tes requêtes. Tu peux même les organiser en “collections” pour les regrouper de façon fonctionnelle.

API Rest sur Postman

Postman est un outil très accessible et complet. Chez Databird, nous avons choisi de l’utiliser dans notre formation à la Data Analyse. Notre pédagogie repose sur la résolution de cas pratiques et business-oriented. L’objectif est que tu acquiers les compétences d'un Data Analyst à la fin du bootcamp !

Créer une API Rest avec Django REST

Django Rest API

Comme son nom l’indique, Django REST permet de développer une API REST. C’est une boîte à outils qui repose sur Python et qui s’installe en une ligne de commande avec “pip install”. Il faut néanmoins avoir au moins la version 3.5 de Python pour que Django REST soit fonctionnel.

Django REST permet de naviguer sur le Web et de lancer des requêtes HTTP vers des URL. Il est donc très pratique pour les développeurs. La documentation est très fournie, et le framework bénéficie d’une communauté active. 

Créer une API Rest avec Flask Restful

Flask Restful est une extension de Flask, mais c’est un module plus léger et très simple à installer. Il permet au développeur de créer son API de manière efficace, en suivant les meilleures pratiques.

Ces dernières années, de nouvelles fonctionnalités ont été ajoutées à Flask Restful, ce qui en fait un framework complètement fonctionnel. Il est idéal pour développer des sites Web et leurs APIs associées.

Flask Restful est livré avec le module marshal_with() qui permet de formater les données. C’est aussi un framework qui est très personnalisable et qui permet de contrôler les réponses apportées par l’API. 

Créer une API Rest avec Falcon

Falcon API Rest

Falcon est un framework qui permet de développer des APIs très efficaces, fiables et fonctionnelles sur un grand nombre de données. Il repose sur la programmation orientée objet et sur un système de classes.

Les APIs que tu peux développer avec Falcon sont des APIs Restful, puisque ce sont celles qui assurent un maximum d’efficacité et un minimum d’erreurs.

Falcon vient avec un débogueur intégré pour t’accompagner au cours du développement. Il prend en charge la gestion du protocole HTTP, le mapping URI et la gestion des cookies. Falcon s’intègre facilement à NoSQL, ainsi qu’à Python.

Créer une API Rest avec Hug

Hug API Rest

Hug est un microframework. Il permet de créer une API qui pourra être utilisée n’importe où dans un code en Python 3.

Hug est très économe en ressources et offre donc des performances rapides. Il est facile à installer (un “pip install” suffit). La documentation est complète et facile à comprendre.

Remarque : le framework est livré avec le module hug.test qui permet de tester l’API.

Créer une API Rest avec Eve

EVE API Rest


Eve est un framework construit sur Cerberus et Flask. Il a été conçu dans le but de développer des APIs simplement et rapidement. On le préfère pour les projets de taille moyenne.

Eve propose des services hautement personnalisables. Il prend en charge toutes les opérations CRUD, la création de points de terminaisons, le tri et le filtrage de données.

Eve fournit également des fonctionnalités avancées telles que l’authentification et la mise en cache. Enfin, il s’intègre parfaitement à SQL.

équipe DataBird formation data analyse
Tu souhaites devenir data analyst

Notre formation intensive en présentiel ou à distance en data analyse est ouverte à tous types de profils. Tu es intéressé(e) pour rejoindre notre communauté ? Postule pour en savoir plus.

A lire également :
Venez assister au Webinar sur nos formations tous les mercredis à 18h
S'inscrire