Webhooks sind ein leistungsstarkes Tool zur Integration verschiedener Systeme und zum Versenden von Benachrichtigungen in Echtzeit. Sie ermöglichen einer Anwendung, eine andere automatisch zu benachrichtigen, wenn ein Ereignis eintritt, ohne dass ständige Anfragen erforderlich sind, um zu prüfen, ob es etwas Neues gibt, wie es bei einer herkömmlichen API der Fall ist. In diesem Beitrag werden wir verstehen, wie sie funktionieren, wie man sie konfiguriert, und wir werden ein praktisches Beispiel mit dem Webhook.site-Tool untersuchen, das die Entwicklung und das Testen von Webhooks erleichtert.
Einfach ausgedrückt ist ein Webhook ein Mechanismus, der es einem Dienst ermöglicht, bei jedem Auftreten eines Ereignisses eine HTTP-Anfrage an eine bestimmte URL zu senden. Anstatt einen Server wiederholt abzufragen, um nach Änderungen zu suchen (wie es bei der Verwendung einer API der Fall ist), benachrichtigt der Webhook Ihre Anwendung, sobald das Ereignis eintritt. Das spart Zeit und Ressourcen und macht die Interaktion zwischen Systemen effizienter.
Ein klassisches Beispiel für die Verwendung von Webhooks sind Zahlungsdienste: Wenn eine Transaktion abgeschlossen ist, sendet das System einen Webhook an Ihre Anwendung, der Sie über den Zahlungsstatus informiert. Von dort aus kann Ihre Anwendung diese Informationen verarbeiten, beispielsweise den Status einer Bestellung aktualisieren, eine Quittung per E-Mail senden und andere Aktionen ausführen.
Webhook-Konfiguration: Sie registrieren eine URL, um Benachrichtigungen zu erhalten. Diese URL wird jedes Mal aufgerufen, wenn ein relevantes Ereignis auf dem Dienst eintritt, der den Webhook sendet.
Ereignis tritt ein: Wenn das konfigurierte Ereignis (z. B. eine Transaktion, Datenaktualisierung oder Erstellung eines Datensatzes) eintritt, löst der Dienst eine HTTP-Anfrage an die registrierte URL aus.
Webhook-Verarbeitung: Ihre Anwendung empfängt diese Anfrage und verarbeitet die Informationen. Sie können beispielsweise Daten in der Datenbank aktualisieren, eine Antwort an den Benutzer senden oder jede andere notwendige Aufgabe ausführen.
Anfrageantwort: Nach der Verarbeitung des Webhooks muss Ihre Anwendung mit einem HTTP-Statuscode (z. B. 200 OK) antworten, um Sie darüber zu informieren, dass die Anfrage korrekt empfangen und verarbeitet wurde.
Bevor Sie Webhooks in einer echten Anwendung konfigurieren, empfiehlt es sich, sie lokal oder in einer Entwicklungsumgebung zu testen. Ein hervorragendes Tool hierfür ist Webhook.site. Es stellt eine temporäre URL bereit, über die Sie Webhooks zur Vorschau und zum Debuggen senden können, sodass Sie genau sehen können, wie die Daten empfangen werden.
Lassen Sie uns Webhook.site verwenden, um den Empfang eines Webhooks zu testen.
Zugriff auf Webhook.site:
Webhook-Senden konfigurieren:
Jetzt implementieren wir etwas Node.js-Code, der das Senden eines Webhooks an diese URL simuliert.
Hier ist ein Beispiel dafür, wie man einen Endpunkt für den Empfang von Webhooks konfiguriert und wie man einen Webhook mit Axios (oder einer anderen HTTP-Bibliothek) sendet:
const express = require('express'); const axios = require('axios'); const app = express(); // Middleware para processar o body das requisições como JSON app.use(express.json()); // Endpoint que recebe os webhooks app.post('/webhook-receiver', (req, res) => { const event = req.body; // Processar o evento (aqui você adiciona a lógica que desejar) console.log('Webhook recebido:', event); // Retornar um status de sucesso para o serviço que enviou o webhook res.status(200).send('Evento processado com sucesso'); }); // Simulando o envio de um webhook para o Webhook.site const webhookURL = 'https://webhook.site/unique-url'; // Substitua pela sua URL do Webhook.site const sendWebhook = async () => { try { const payload = { event: 'payment_completed', data: { orderId: '12345', amount: 100.0, currency: 'USD' } }; const response = await axios.post(webhookURL, payload); console.log('Webhook enviado com sucesso:', response.status); } catch (error) { console.error('Erro ao enviar webhook:', error); } }; app.listen(3000, () => { console.log('Servidor rodando na porta 3000'); // Enviar o webhook após o servidor iniciar sendWebhook(); });
In diesem Beispiel:
Da bei Webhooks Daten direkt an eine URL gesendet werden, müssen unbedingt einige Sicherheitsvorkehrungen getroffen werden:
Origin Validation: Überprüfen Sie, ob die Anfrage tatsächlich vom erwarteten Dienst kommt. Viele Dienste bieten eine kryptografische Signatur (z. B. mit HMAC), mit der Sie die Authentizität der Anfrage überprüfen können.
HTTPS verwenden: Konfigurieren Sie Ihre Webhook-Endpunkte immer für die Verwendung von HTTPS und stellen Sie sicher, dass die Kommunikation zwischen dem Dienst und Ihrer Anwendung verschlüsselt ist.
Authentifizierung: Zusätzlich zu HTTPS erfordern einige Anwendungen, dass Webhook-Anfragen ein Authentifizierungstoken oder einen Authentifizierungsschlüssel als zusätzliche Sicherheitsebene enthalten.
Ratenbegrenzung: Implementieren Sie Beschränkungen für die Anzahl der Anfragen, die Ihr Server in einem bestimmten Zeitraum verarbeiten kann, um zu verhindern, dass Ihre Anwendung in kurzer Zeit mit zu vielen Anfragen überlastet wird.
Menschen verwechseln Webhooks oft mit APIs: Hier ist der Hauptunterschied:
Webhooks sind besonders nützlich in Szenarien, in denen Sie Echtzeitbenachrichtigungen benötigen, z. B. in Zahlungssystemen, Ereignisbenachrichtigungen und Integrationen zwischen verschiedenen Diensten.
Webhooks sind eine einfache und effiziente Möglichkeit, verschiedenen Systemen die automatische Kommunikation in Echtzeit zu ermöglichen. Mit Tools wie Webhook.site können Sie Ihre Webhooks testen und debuggen, bevor Sie sie in die Produktion integrieren. Darüber hinaus stellt die Einhaltung guter Sicherheitspraktiken sicher, dass Ihre Endpunkte vor unerwünschtem Zugriff geschützt sind.
Wenn Sie eine moderne Anwendung entwickeln und verschiedene Dienste integrieren müssen, sind Webhooks eine hervorragende Lösung, um die Kommunikation zwischen ihnen zu automatisieren.
Wenn Sie Fragen oder interessante Erfahrungen mit Webhooks haben, teilen Sie diese in den Kommentaren!
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3