Découvrez pourquoi utiliser une API
Tout d’abord, une API c’est quoi ?
Grosso modo, c’est quelque chose qui permet de communiquer facilement avec tout un système d’information. On actionne un levier et bim ça fait ce qu’on veut derrière (il s’annonce bien ce cours !). Mais on va quand même voir ce qu’est un levier, et surtout comment on l’actionne, rassurez-vous !
API signifie Application Programming Interface (ou interface de programmation applicative). C’est une grosse interface qui permet d'interagir avec un système d’information au travers de ce qu’on appelle des endpoints.
Chaque endpoint permet d’exécuter différentes actions dans le système d’information, sans avoir à en comprendre le fonctionnement.
Ces actions peuvent être la consultation d’un panier, l’envoi d’un e-mail, l’authentification auprès d’un service… les possibilités sont nombreuses.
Mais concrètement, un endpoint, c’est quoi ?
Un endpoint est une URL sur laquelle on réalise différents appels. Selon la méthode HTTP utilisée (GET, POST, PATCH, DELETE), une partie de code va être exécutée et retourner un résultat.
Ce résultat est constitué :
D’un status code (200, 201, 400, etc.) qui indique le succès ou non de l’appel ;
D’un contenu qui est en JSON dans la majorité des cas (peut également être du XML dans certains cas), et qui va contenir des informations soit de succès soit d’erreur.
Ces appels peuvent ensuite être paramétrés avec des filtres dans les paramètres d’URL ou dans le corps de la requête.
Les API sont aujourd’hui devenues un standard. Elles permettent de centraliser toute l’information en ayant moins de données et de logique métier à gérer dans les terminaux. Une seule application Backend proposant une API peut être mutualisée et être consommée par une application Front, des applications mobiles Android/iOS, mais aussi d’autres systèmes d’information, des partenaires, etc.
Une API peut être créée dès le début d’un projet, mais aussi être mise en place sur un projet existant pour le faire évoluer. C’est ce dernier que nous allons ensuite voir ensemble, en adaptant un projet Django existant pour lui intégrer une API avec Django REST Framework (DRF).
Découvrez le cas concret du cours
Tout au long de ce cours, nous allons mettre en place une API sur un projet de boutique en ligne qui permet à des utilisateurs de consulter un catalogue de produits rangé par catégories, produits et articles.
Nous permettrons ensuite aux administrateurs de la plateforme de gérer la boutique en ligne, en ajoutant de nouveaux produits à mettre en vente, et en masquant certains produits s’ils ne sont plus disponibles. Nous devrons alors sécuriser certains endpoints pour qu’ils ne soient pas accessibles publiquement.
Le code de l’application est disponible sur ce repository. À la fin de certains chapitres, des exercices seront proposés en partant d’une branche Git, et une solution sera proposée dans une autre branche.
Installez et configurez DRF
Django REST Framework est une librairie permettant la mise en place d’une API pour Django (vous pouvez regarder sa documentation sur le site officiel, en anglais). Basée sur le framework, elle propose la mise en place des endpoints d’une façon similaire à la mise en place des URL, Views et Forms de Django.
Pourquoi utilise-t-on cette librairie ?
Écrire une API à la main est possible, on pourrait écrire nous-mêmes nos endpoints en nous basant sur les Views de Django, et retourner du JSON.
Mais c’est en réalité une quantité de travail phénoménale, et d’autres développeurs se sont déjà penchés sur le sujet pour simplifier grandement l’écriture d’API.
Dans ce chapitre, nous allons faire simple et :
Mettre en place la librairie, en l’ajoutant aux dépendances de notre projet ;
Déclarer DRF parmi les applications du projet Django pour permettre son utilisation ;
Configurer une première URL fournie par DRF pour s’assurer du bon fonctionnement de la librairie.
En partant de la branche main de notre projet, commençons par ajouter la dépendance à DRF dans notre fichier requirements.txt
:
djangorestframework==3.12.4
Un petit coup d’ install
dans notre environnement virtuel :
pip install -r requirements.txt
Puis, déclarons DRF dans la liste des applications installées du fichier settings.py
du projet Django :
INSTALLED_APPS = [
'rest_framework',
]
Pour nous assurer que notre API est fonctionnelle, nous allons activer l’authentification fournie par DRF pour nous connecter. Éditons notre fichier urls.py
:
urlpatterns = [
path('api-auth/', include('rest_framework.urls'))
]
Démarrons à présent notre serveur de développement et allons nous connecter sur notre API à présent en place :
python manage.py runserver
Nous devrions maintenant pouvoir nous rendre sur notre URL et nous connecter. Le projet contient une base de données SQLite qui contient déjà un compte administrateur dont voici les identifiants :
Nom d’utilisateur : admin-oc
Mot de passe : password-oc
Le projet étant en local, nous pouvons nous connecter à l’URLhttp://127.0.0.1:8000/api-auth/
.
Vous pouvez me suivre dans l’installation et la configuration ci-dessous : 👇
Nous avons installé et configuré DRF !
En résumé
Les API sont des interfaces permettant l’échange et le traitement d’informations entre un système d’information et toute autre application.
Un endpoint est une URL sur laquelle on peut effectuer des opérations en fonction de la méthode HTTP utilisée.
Django Rest Framework est une librairie permettant de mettre en place une API sur un projet Django.
Maintenant, on est prêts pour la suite, et sans attendre on va mettre en place notre premier endpoint !