L’usage des Webhooks dans les APIs

Auteur(s) de l'article

Une bonne partie de notre travail consiste à intégrer plusieurs applications entre elles. La majorité de ces applications n'ont pas d'intégration native prévue par leurs auteurs, mais expose ce que l'on appelle une API (Application Programming Interface) pour s'échanger des informations.
Imaginons que nous souhaitons synchroniser les données de notre application avec un CRM (application de gestion de contact et de la relation client). Si ce CRM expose une API, nous pouvons régulièrement lui faire un appel qui dit en substance "donne-moi tout les contacts qui ont été modifié ou créé depuis hier". Il s'agit de la stratégie API Polling.
Si vous avez déjà voyagé avec des enfants, c'est l'équivalent de "Est-ce que l'on est bientôt arrivé?" un million de fois.

Lu sur Internet (https://medium.com/swlh/an-alternative-strategy-to-api-polling-using-pub-sub-and-mqtt-40dc643dcf82)

Les APIs modernes proposent une stratégie alternative: pouvoir s'inscrire à des changements et être notifié rapidement. C'est la stratégie de Push et c'est la base des Webhooks.

Webhooks

Les Webhooks sont basés sur un système d'évenement et passe par le protocole HTTP pour transmettre les données. La nature des événements dépendent de la logique business chaque application. Pour un CRM, ils est possible de s'inscrire aux événements de type "création de nouveau contact", "modification de contact", "suppression de contact", etc.
Cette fois, c'est moi qui annonce aux enfants quand nous sommes arrivés, seulement seule fois.
Le format des Webhooks n'est pas normé et il n'y a pas de spécification établie. Toutefois la plupart des acteurs utilisent le format JSON pour les données et applique des mécanismes de sécurité ou des stratégies de rappels (en cas d'indisponibilité de notre application au moment de la communication).
Voici un site que j'aurais aimé découvrir il y a 4 ans. Il s'agit d'un recueil de bonne pratique en matière de Webhooks (sécurité, documentations, exemples, tests, opérationnels) tant pour l'émetteur que pour le client/consommateur:

Prochainement, les Webhooks dans Symfony?

Et c'est encore tout frais, mais à l'occasion de la SymfonyCon 2022, une discussion est ouverte pour créer un composant afin de simplifier et normaliser la gestion des Webhooks (plus génériquement des "Remote Events") dans Symfony.
Pour conclure, les webhooks permettent souvent d'avoir des intégrations plus fluide et rapide en générant souvent un code plus simple (du point de vue du client) et en consommant moins de données sur le réseau. Pratique!