Construire l'API REST la plus simple possible
Introduction
Les API REST sont partout — sans elles, les sites web seraient beaucoup plus ennuyeux. Ce sont elles qui intègrent le frontend et le backend d'un site web, et nous allons en construire une nous-mêmes aujourd'hui — en moins de cinq minutes.
Définition d'une API REST
Une API REST — abréviation de interface de programme d'application de transfert d'état représentationnel — est ce qui permet à différents langages de programmation et parties d'une application de communiquer entre eux. De manière native, ces langages seraient incapables de se parler, car ils ne peuvent pas comprendre le code des autres. Ce serait une grande perte, puisque certains langages de programmation sont plus performants dans différents domaines ou sont orientés vers des tâches spécifiques — par exemple, vous n'utiliseriez jamais JavaScript pour l'apprentissage automatique. Cependant, Python est le langage de prédilection pour cela — et c'est là que les API REST montrent leur valeur.
En essence, ces API envoient des informations vers et depuis un serveur, des informations qui peuvent être décodées et envoyées au client. Le point fort de ce type d'API est qu'il fonctionne extrêmement bien pour les bases de données — il y a quatre fondamentaux méthodes HTTP qui peuvent être utilisés.
- GET — obtient des données du serveur
- POST — crée un enregistrement dans le serveur
- PUT/PATCH — met à jour un enregistrement dans le serveur
- DELETE — supprime un enregistrement existant dans le serveur
On peut s'en souvenir grâce à l'acronyme CRUD (créer, lire, mettre à jour et supprimer).
Aperçu des outils utilisés
Pour créer notre API REST, nous allons avoir besoin d'installer quelques prérequis (nous en parlerons dans la section suivante). Avant de commencer, cependant, jetons un rapide coup d'œil aux outils que nous allons réellement utiliser.
Tout d'abord, pour la partie backend de notre API — la partie qui gère la base de données, les requêtes entrantes et modifie les données — nous utiliserons Python, et une bibliothèque géniale appelée Flask. Ne vous inquiétez pas si vous n'êtes pas trop familier avec Python — le code sera court et bien expliqué. À part cette bibliothèque, nous n'aurons besoin de rien d'autre du côté backend !
Une alternative populaire à Flask, pour ceux qui sont intéressés, est Django. Cependant, c'est un niveau supérieur à Flask et souvent beaucoup plus compliqué, donc nous nous en tiendrons à Flask pour cet article.
Pour la partie frontend de notre API RESTful, nous utiliserons JavaScript pour modifier une page HTML que l'utilisateur voit — donnant une preuve visuelle du fonctionnement de notre API. De même, ne vous inquiétez pas si vous ne connaissez pas JavaScript — le code sera encore plus simple que le backend !
Exigences + Installation
Prérequis
Python >= 3.4
Flask == 1.1.2
- Un navigateur web
Commençons par la configuration. Si vous n'avez pas déjà Python, téléchargez-le ici.
Passons à notre première installation réelle — Flask. Si vous avez une version de Python supérieure ou égale à 3.4 (vous pouvez vérifier avec python3 -V
dans votre terminal), alors vous êtes prêt pour la prochaine étape. Sinon, vous devrez installer pip
ou mettre à jour votre Python vers une version plus moderne — les instructions sont sur leur site web ici.
Une fois Flask installé, vous pouvez taper python3 -m pip install Flask
n'importe où dans votre terminal, et après une minute ou deux, vous aurez la bibliothèque Flask installée. En avant !
Construction du backend
Nous allons commencer par construire le backend — c'est ce que le client ne voit pas, et la partie de l'application qui fait le gros du travail et gère les requêtes HTTP. Nous allons le construire avec Python et Flask.
Tout d'abord, nous allons devoir importer notre bibliothèque. Créez un nouveau fichier, en le nommant comme vous voulez — assurez-vous juste qu'il se termine par une .py
extension pour qu'il soit reconnu comme un fichier Python. Je vais nommer le mien app.py
.
Nous pouvons ensuite commencer par importer Flask ci-dessous.
de flask import Flask
Nous devons ensuite initialiser notre application web Flask.
app = Flask(__name__)
Ensuite, créons une routeFlask, qui est essentiellement l'URL que l'utilisateur doit visiter pour pouvoir accéder au contenu. Nous allons créer une route à /hello
, afin que l'utilisateur puisse aller à cette URL pour accéder aux données qui s'y trouvent. Nous pouvons créer cette route en utilisant un décorateur — essentiellement une fonction qui enveloppe une autre fonction.
Les décorateurs pourraient faire l'objet d'un article à part entière, mais en essence ils font quelque chose, exécutent la fonction qu'ils "décorent", puis continuent à faire quelque chose — enveloppant essentiellement des instructions autour d'une autre fonction.
Avec Python, nous pouvons spécifier un décorateur en utilisant le symbole "@". Descendons de quelques lignes et configurons notre décorateur de route Flask.
@app.route("/hello", methods=["GET"])
Le code ci-dessus configure une route d'application sur la page d'accueil et prend en charge GET
requests (afin que JavaScript puisse accéder aux données). Passons à la création de la fonction réelle qui s'exécutera lorsque l'utilisateur s'y rendra. Sur la ligne directement sous le décorateur, tapez le code suivant (ou vous pouvez passer à La fonction que nous avons configurée ci-dessus renvoie des données, sous forme de JSON — un acronyme pour JavaScript Object Notation, et un langage qui peut être lu par la plupart des autres langages de programmation majeurs. Il envoie des données sous la forme d'un le code complet
def hello(): # you can name this anything you want
return {"response": "Hello from Python!"}
, avec un nom "response" et une valeur "Hello from Python" — un peu similaire à un dictionnaire Python. Enfin, nous devons préparer l'application à s'exécuter. Nous pouvons le faire en ajoutant — en bas du fichier — uneobjet
fonction. app.run()
signifie que l'application s'exécutera lorsque nous exécuterons le code depuis la ligne de commande, et nous définissons
if __name__ == "__main__":
app.run(debug = True)
app.run()
à debug
afin que nous puissions voir tout ce qui se passe et attraper toutes les erreurs potentielles. True
Et voilà pour le backend et Python ! Nous sommes prêts à passer au frontend simple maintenant — après seulement 7 lignes de code ! Nous devrons modifier un peu ce fichier pour pouvoir servir les fichiers JavaScript et HTML, mais ce ne sera que quelques lignes de code supplémentaires. Vous
pouvez essayez d'exécuter ceci dès maintenant, en ouvrant votre terminal, en naviguant vers le répertoire contenant votre fichier Python actuel, et en tapant python3 my-file-name.py
.
Si vous le faites, vous aurez des informations affichées dans votre console, indiquant que le serveur fonctionne sur localhost:5000. Si vous allez sur http://localhost:5000/hello, vous pourrez déjà voir le JSON là-bas ! Il aura l'air exactement comme nous l'avons envoyé (bien qu'il sera au format JSON). Vous devriez voir quelque chose comme ci-dessous :
{"response": "Hello from Python!"}
Cependant, nous allons quand même ajouter du JavaScript et du HTML pour que les données soient récupérées manuellement, car souvent ces API REST sont destinées à être utilisées par l'application, pas à être visualisées directement par l'utilisateur.
Mise en place du frontend
Nous utiliserons JavaScript pour accéder à l'API et un HTML très simple pour créer une page d'index que l'utilisateur peut visualiser. Commençons.
Tout d'abord, nous allons créer un dossier nommé templates
dans le même répertoire que notre fichier Python, et à l'intérieur, un fichier nommé index.html
. C'est le fichier qui va être rendu par Python quand un utilisateur accède à notre site web localhost. Je ne vais pas entrer dans les détails ennuyeux du contenu du fichier index.html
- c'est juste un fichier simple avec un en-tête et un espace pour que JavaScript injecte du code.
lang="en">
charset="UTF-8">
name="viewport" content="width=device-width, initial-scale=1.0">
REST API Sandbox
Data from Python below!
id="fromJS">