webhook api

I webhook consentono l’interazione tra applicazioni basate sul Web tramite l’uso di callback personalizzati.

L’uso dei webhook consente alle applicazioni web di comunicare automaticamente con altre web-app.

A differenza dei sistemi tradizionali in cui un sistema (soggetto) continua a interrogare un altro sistema (osservatore) per alcuni dati, i webhook consentono all’osservatore di inserire automaticamente i dati nel sistema del soggetto ogni volta che si verifica un evento.

Ciò elimina la necessità di un controllo costante da parte del soggetto. I webhook operano interamente su Internet e quindi tutte le comunicazioni tra i sistemi devono avvenire sotto forma di messaggi HTTP.

Utilizzo di webhook

I webhook si basano sulla presenza di URL statici che puntano alle API nel sistema del soggetto che devono essere notificate quando si verifica un evento nel sistema dell’osservatore. Un esempio di ciò potrebbe essere un’app Web progettata per raccogliere e gestire tutti gli ordini effettuati sull’account Amazon di un utente. In questo scenario, Amazon funge da osservatore e la Webapp di gestione degli ordini personalizzati funge da soggetto.

Invece di fare in modo che la webapp personalizzata chiami periodicamente le API di Amazon per verificare la presenza di un ordine creato, un webhook creato nella webapp personalizzata consentirebbe ad Amazon di inviare automaticamente un ordine appena creato nella webapp tramite un URL registrato. Pertanto, per abilitare l’uso dei webhook, il soggetto deve disporre di URL designati che accettano notifiche di eventi dall’osservatore. Ciò riduce un carico significativo sull’oggetto poiché le chiamate HTTP vengono effettuate tra le due parti solo al verificarsi di un evento.

Sistemi basati su polling vs sistemi basati su webhook

Una volta che il webhook del soggetto viene chiamato dall’osservatore, il soggetto può intraprendere l’azione appropriata con questi dati appena inviati. Generalmente, i webhook vengono eseguiti tramite richieste POST su un URL specifico. Le richieste POST consentono di inviare ulteriori informazioni all’oggetto. Inoltre, può anche essere utilizzato per identificare tra una serie di vari eventi possibili invece di creare URL webhook separati per ciascun evento.

webhook api

Flusso di lavoro webhook

Per implementare i webhook in entrata sulla tua applicazione, devi eseguire i seguenti passaggi di base:

  • Esponi un endpoint API sul tuo server delle applicazioni che accetta ed elabora le chiamate HTTP POST
  • Fornire l’accesso a questo endpoint per i potenziali utenti del webhook. L’endpoint API verrà chiamato un’applicazione di origine dati ogni volta che vengono soddisfatte le condizioni pertinenti.
  • Elabora i dati POST e restituisci una risposta all’iniziatore della chiamata webhook per indicare lo stato. Questo passaggio può o non può essere presente.

Webhook e API a confronto

Sia i webhook che le API hanno l’obiettivo di stabilire la comunicazione tra le applicazioni. Tuttavia, ci sono alcuni vantaggi e svantaggi distinti nell’utilizzo di Webhook rispetto alle API per ottenere l’integrazione delle applicazioni.

I webhook tendono a essere soluzioni migliori se i seguenti punti sono più rilevanti per il sistema implementato:

  • Se i dati vengono aggiornati frequentemente sul server, i webhook tendono a essere soluzioni migliori in quanto vengono eliminate le chiamate API non necessarie dal client al server. Secondo resthooks.com , il 98,5% dei sondaggi API viene sprecato.
  • I webhook consentono soluzioni migliori per i sistemi che richiedono aggiornamenti dei dati quasi in tempo reale. I sondaggi dell’API vengono generalmente eseguiti a intervalli prestabiliti che potrebbero impedire l’aggiornamento dei dati in tempo reale. Con i webhook, gli aggiornamenti vengono inviati dal server al client non appena il webhook viene attivato.

L’uso dell’API dovrebbe essere preferito rispetto ai webhook in alcune altre situazioni.

Aspetti da considerare

Gli aspetti importanti da considerare per l’utilizzo delle API su Webhook sono:

  • L’uso dell’API consente una maggiore personalizzazione di quando eseguire il polling dei dati da un server e anche di quanti dati eseguire il polling dal server. La quantità di dati di cui eseguire il polling viene regolata tramite la dimensione del polling delle API. Con i webhook, il server generalmente decide i dati e il momento in cui viene inviato.
  • Per i sistemi con dati altamente variabili (come sistemi in tempo reale, sistemi IoT, ecc.), il polling basato su API potrebbe essere un’opzione migliore poiché per ogni chiamata API, esiste un’alta probabilità di risposte utilizzabili.
  • È possibile che i dati inviati da un server, tramite un webhook, vengano completamente ignorati dal client nel caso in cui gli endpoint REST siano offline. Nel caso in cui il server non disponga di un meccanismo per riprovare tali push non riusciti, gli aggiornamenti dei dati vengono completamente persi.

Per affrontare la possibilità di perdere dati inviati da un server quando il webhook è offline, puoi utilizzare una coda di messaggistica degli eventi per archiviare tali chiamate. Esempi di piattaforme che forniscono tale funzionalità includono RabbitMQ o Simple Queue Service (SQS) di Amazon. Entrambi sono progettati per fungere da strutture di archiviazione di messaggistica intermedia che evitano la possibilità di perdere una chiamata webhook.

Ercole Palmeri

Autore