Qu'est-ce qu'un webhook, en quoi il diffère des API, et quand l'utiliser
Avec la popularisation des API pour automatiser les processus et accéder à des données tierces, la possibilité de gérer les flux de travail en temps réel est devenue de plus en plus concrète. Cela est particulièrement vrai avec l'essor des webhooks, qui permettent de recevoir des notifications en temps réel du serveur à chaque fois qu'un événement spécifique se produit.
Voyons ce qu'est un webhook et quand l'utiliser, après avoir brièvement abordé les différences avec le polling API, qui est le mode traditionnel d'interaction entre les applications via API.
Le fonctionnement des API repose sur un modèle de requête-réponse : lorsque l'on dit que deux applications interagissent via API, on fait référence à ce processus. Lorsqu'une application souhaite obtenir des données d'une autre, elle envoie une requête API et attend la réponse du serveur.
Les webhooks et le polling sont deux méthodes possibles pour faire une requête API. En résumé, vous pouvez choisir d'être informé en temps réel lorsqu'il y a de nouvelles données, ou bien demander des mises à jour à des intervalles réguliers.
Dans le cas du polling, le client demande des informations à intervalles réguliers, par exemple toutes les heures ou toutes les 5 minutes, et reçoit la liste des nouvelles données. Les données seront donc mises à jour régulièrement, mais pas en temps réel. De plus, si aucune nouvelle donnée n'est disponible, les requêtes de ce type ne renverront aucune réponse.
À l'inverse, un webhook permet à une application de recevoir une notification en temps réel chaque fois qu'un certain événement se produit. Le client n'a alors plus qu'à attendre les mises à jour.
Imaginez des passagers lors d'un long trajet en voiture : ils peuvent demander combien de temps il reste toutes les demi-heures, comme avec le polling, ou bien se détendre et attendre d'être avertis une fois arrivés à destination.
Le webhook est un rappel HTTP (callback) qui ne nécessite aucune requête du client. Le "hook" est déclenché lorsqu'un événement spécifique se produit : le rappel s'exécute automatiquement sans qu'il soit nécessaire de faire une demande de la part de l'application destinataire des mises à jour.
C'est pourquoi le webhook est parfois appelé "API inversée": au lieu de chercher les données, il permet aux données d'être envoyées directement à l'application destinataire via une notification push. Chaque fois que l'événement est déclenché, la source envoie une requête à l'URL configurée. L'application réceptrice reçoit ainsi les mises à jour en temps réel uniquement lorsque c'est nécessaire, ce qui est la différence fondamentale avec les API traditionnelles.
Le webhook peut être utilisé pour la synchronisation des données, la gestion de logiciels, ou des systèmes de e-commerce, permettant de communiquer chaque nouvelle transaction en ligne pour mettre à jour automatiquement l'inventaire, la facturation et l'expédition.
Les webhooks sont couramment utilisés pour la synchronisation de données et la surveillance des serveurs, mais ils sont aussi massivement employés dans les réseaux sociaux, les sites de e-commerce et les appareils IoT, qui peuvent signaler des anomalies en temps réel. Tout ce dont vous avez besoin est d'un point de terminaison HTTP capable de recevoir une requête POST.
Il est possible, par exemple, d'automatiser la création de posts sur les réseaux sociaux lors de la publication d'un nouvel article de blog, ou d'envoyer des notifications personnalisées liées à des événements spécifiques, tels qu'un achat en ligne ou l'utilisation de certaines fonctionnalités bancaires.
L'envoi de messages en temps réel à plusieurs applications permet de simplifier le flux de travail, intégrant par exemple les données analytiques, les chats, et d'autres applications dans le CRM d'un site e-commerce.
Les avantages évidents des webhooks se résument en peu de mots: des données en temps réel et une optimisation des ressources. Contrairement au polling, un webhook n'envoie que les messages nécessaires, c'est-à-dire ceux déclenchés par un événement spécifique.
Le webhook est donc la meilleure solution pour ceux qui ont besoin de mises à jour en temps réel, tout en permettant d'éviter des centaines de requêtes API inutiles en l'absence de nouvelles données.
Un polling agressif, demandant des mises à jour toutes les 5-10 minutes, peut entraîner des surcoûts et une surcharge réseau. Avec le webhook, il n'y a pas de problème de scalabilité: il s'agit simplement de gérer plus de callbacks, sans augmenter les requêtes API.
L'un des inconvénients du webhook est qu'il n'est pas encore supporté par toutes les applications tierces, ce qui peut freiner l'optimisation des systèmes. Openapi permet de configurer un webhook pour chaque appel API et de gérer les caractéristiques du polling, permettant ainsi d'utiliser les deux processus selon vos besoins.