API et Webhook : C’est quoi la différence ?
API et Webhook sont deux termes très employés dans le développement web et qui font leur chemin dans le NoCode maintenant. Définissons-les puis voyons leurs points communs et leur usage classique.
Qu’est-ce qu’une API ?
L’acronyme API signifie Application Programming Interface. Mais avant de comprendre son usage et le pourquoi de son existence, il faut revenir un peu sur la notion d’architecture Client - Serveur.
Pour que tu puisses naviguer sur internet, il te faut un navigateur. Ce navigateur exécute du code pour t’afficher des éléments à l’écran (jusque-là tu vas me dire : ça, je le sais déjà… ). Et pour aller chercher ses éléments il doit souvent aller les demander à un serveur, le serveur où est hébergé ton site web. La façon dont le navigateur fait des appels au serveur a son importance. Il faut bien que les 2 se comprennent ! Si ton navigateur parle une langue et que ton serveur en parle une autre, impossible de communiquer.
Les APIs sont là pour mettre à plat cette façon de communiquer, propre à chaque serveur. Ton navigateur construit donc une requête HTTP avec des données attachées, et envoie le tout sur un endpoint (c’est-à-dire une URL bien précise) au serveur.
Du coup, tu peux maintenant facilement imaginer que ton navigateur va aller faire des requêtes sur pleins d’APIs différentes et que ton serveur va pouvoir lui aussi faire des requêtes à d’autres serveurs pour dérouler une logique métier.
Chaque serveur peut être appelé seulement s’il l’autorise et selon les règles qu’il définit. On dit que le serveur “ouvre” ou “expose” une API, un chemin vers lui-même pour lui demander des choses. Et pour pouvoir cadrer l’ensemble des pratiques de comment effectuer une requête correctement, on a inventé les API dites REST. Tu peux aller jeter un œil à Wikipedia sur le sujet, c’est un bon début.
Un exemple d’API
Le serveur de la NASA accepte des requêtes d’un certain format. L’URL suivante https://api.nasa.gov/neo/rest/v1/feed?start_date=START_DATE&end_date=END_DATE&api_key=API_KEY permet de récupérer la liste des astéroïdes proches de la terre entre deux dates.
On remarque que la requête est de type GET, signifiant que l’appel souhaite récupérer des informations. Il existe également d’autres types de requêtes :
- POST pour mettre à jour une ressource dont on connaît l’identifiant unique ou bien créer une ressource et recevoir son identifiant unique en retour.
- PUT pour mettre à jour ou créer une ressource dont on connaît l’identifiant unique.
- DELETE pour supprimer une ressource dont on connaît l’identifiant unique.
Pour utiliser l’API de la NASA, il te faudra demander une clé API auparavant pour faire cet appel, indiquant au serveur que tu as le droit de faire cette demande au moment de l’exécution de la requête. Amuse-toi un peu avec ces API, elles sont très sympas. 😉
Pour t’entraîner, voici un outil bien pratique qui permet de faire des requêtes facilement : Postman.
Qu’est-ce qu’un Webhook ?
Le terme a été inventé en 2007 par un certain Jeff Lindsay et signifie “point d’ancrage web”. Web pour “web” (ok, pas trop difficile...) et “Hook” pour point d’ancrage.
En fait, il faut le voir comme l’ouverture d’une API, sur une URL spécifique, par un serveur permettant d’exécuter une action bien précise lorsqu’appelé. Le serveur autorise un Hook, un ancrage sur lui-même. Le terme Hook prend tout son sens dans l’usage que l’on va faire de cette URL. Le concept est de “trigger”, c’est-à-dire d’exécuter la requête du serveur lorsqu’un évènement survient.
Un exemple de Webhook
Je souhaite qu’un canal de notre serveur Discord soit au courant du remplissage d’un formulaire Typeform par un prospect. J’ai deux options :
- Soit Discord interroge Typeform régulièrement pour savoir si un prospect à rempli un nouveau formulaire.
- Soit Typeform envoie directement l’information à Discord lorsque cela se produit.
Je te laisse deviner la solution la plus efficace ? Eh bien, cette solution c’est ce qu’on appelle utiliser un Webhook. Dans ce cas, c’est un Webhook de Discord. Il est paramétré par Discord pour n’effectuer qu’une action : poster un message dans un canal lorsque l’URL est appelé avec le message en paramètre.
Les Webhook sont donc des requêtes de type POST et le format envoyé est souvent de type Json.
Voilà ! J’espère que le lien entre API et Webhook est plus clair maintenant. 😉