Webhooks

Présentation Un webhook est un mécanisme qui permet à une application de fournir des informations en temps réel à une autre application. Au lieu que l’application cliente interroge (poll) constamment le serveur pour des mises à jour, le serveur envoie une notification (généralement une requête HTTP POST) à une URL spécifiée par le client dès qu’un événement se produit.

Principes Clés

  • Communication basée sur les événements : les données sont envoyées lorsqu’un événement se produit.
  • Modèle push : le serveur “pousse” les données vers le client.
  • Nécessite une URL de rappel (callback URL) exposée par l’application cliente.
  • Réduit la charge sur le serveur et le réseau par rapport au polling.

Composants Principaux

  • Fournisseur (Provider): L’application qui déclenche l’événement et envoie le webhook (par exemple, Stripe, GitHub).
  • Consommateur (Consumer): L’application qui reçoit le webhook à son URL de rappel (votre application).
  • URL de Rappel (Callback URL): L’endpoint HTTP exposé par le consommateur pour recevoir les webhooks.
  • Événement: L’action qui déclenche l’envoi du webhook (par exemple, un paiement réussi, un commit de code).
  • Charge Utile (Payload): Les données envoyées dans la requête webhook, décrivant l’événement.

Guides d’utilisation Les webhooks sont couramment utilisés pour intégrer des services tiers et réagir à des événements externes en temps quasi réel. Par exemple, recevoir des notifications de paiement de Stripe, des mises à jour de dépôt de GitHub, ou des messages entrants de Twilio. Pour utiliser des webhooks avec une application Hono, vous créez une route qui sert d’URL de rappel pour le fournisseur de webhook et implémentez la logique pour traiter la charge utile entrante.

Exemples de Code (Hono recevant un Webhook - Conceptuel) Une application Hono peut facilement servir d’endpoint pour recevoir des webhooks. Vous définissez une route (souvent POST) qui correspond à l’URL de rappel configurée chez le fournisseur de webhook.

Voici un exemple conceptuel montrant comment une application Hono pourrait recevoir un webhook de paiement :

import { Hono } from 'hono';
import { json } from 'hono/json';
 
const app = new Hono();
 
// Endpoint pour recevoir les webhooks de paiement
app.post('/webhooks/payment', async (c) => {
  const payload = await c.req.json(); // La charge utile du webhook
 
  console.log('Webhook de paiement reçu:', payload);
 
  // Dans une application réelle, vous vérifieriez la signature du webhook
  // pour vous assurer qu'il provient d'une source fiable et traiteriez l'événement.
 
  // Exemple de traitement basé sur le type d'événement (conceptuel)
  if (payload.event_type === 'payment_succeeded') {
    console.log(`Paiement réussi pour la commande ${payload.order_id}`);
    // Mettre à jour votre base de données, envoyer une confirmation, etc.
  } else {
    console.log(`Événement de paiement non géré: ${payload.event_type}`);
  }
 
  // Renvoyer une réponse 200 OK pour indiquer que le webhook a été reçu
  return c.text('Webhook reçu', 200);
});
 
export default app;

Note : La sécurité est cruciale pour les webhooks. Vous devez toujours vérifier la signature du webhook pour authentifier la source et potentiellement implémenter une logique de relecture pour gérer les livraisons en double.

Diagramme Mermaid

graph TD
    Fournisseur[Application Fournisseur (ex: Stripe)] -- Événement Déclenché --> Fournisseur
    Fournisseur -- Envoie Webhook (HTTP POST) --> Internet
    Internet -- Arrive à l'URL de Rappel --> ApplicationHono[Application Hono (Consommateur)]
    ApplicationHono -- Traite la Charge Utile --> ApplicationHono
    ApplicationHono -- Réponse HTTP 200 OK --> Fournisseur