Webhook
- Türkçe karşılığı
- web kancası
- Okunuşu
- vebhuk
Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.
Kısaca
Webhook, bir uygulamanın, tamamlanan bir ödeme gibi belirli bir olay gerçekleştiği anda sizin verdiğiniz bir URL'ye otomatik olarak gönderdiği HTTP isteğidir.
Webhook nedir?
Webhook, bir sistemin bir şey olduğu anda başka bir sistemi haberdar etmesini sağlar. Bir servise URL kaydedersiniz; yeni bir sipariş, başarısız bir ödeme ya da bir kod deposuna yapılan push gibi seçtiğiniz bir olay gerçekleştiğinde servis, olayın ayrıntılarını genellikle JSON biçiminde taşıyan bir HTTP POST isteğini bu URL'ye gönderir.
Webhook'lar polling'in tersidir. Polling'de uygulamanız bir API'ye bir şeyin değişip değişmediğini tekrar tekrar sorar; bu da istekleri boşa harcar ve gecikme ekler. Webhook'ta ise diğer servis bilgiyi yalnızca yeni bir şey olduğunda size iletir; bu yüzden webhook'lara bazen ters API (reverse API) denir.
Gündelik bir benzetme, kargo takip sayfasını birkaç dakikada bir yenilemekle, kargo geldiğinde kısa mesaj almak arasındaki farktır. Webhook'lar; ödeme sağlayıcıları, sohbet araçları, Git barındırma servisleri ve CI/CD hatları tarafından otomatik işleri tetiklemek için yaygın olarak kullanılır.
Webhook URL'si herkese açık olduğundan alıcı her isteği doğrulamalıdır; bu genellikle paylaşılan bir gizli anahtarla hesaplanan bir imzanın kontrol edilmesiyle yapılır. Alıcılar ayrıca 2xx durum koduyla hızlıca yanıt vermeli ve tekrarlanan teslimatları güvenle işlemelidir, çünkü çoğu gönderici teslimat başarısız olduğunda yeniden dener.
Bir bakışta
Önemli noktalar
- Webhook, bir olayın tetiklediği HTTP isteğidir.
- Gönderen veriyi size iletir, dolayısıyla polling yapmanız gerekmez.
- URL'yi siz verirsiniz; diğer servis onu çağırır.
- İmzaları doğrulayın, çünkü herkese açık bir URL'ye herkes istek gönderebilir.
- Yeniden denemeleri bekleyin ve işleyicinizi birden fazla kez çalışmaya karşı güvenli hale getirin.
Örnek
// Receive webhook events from a payment provider
app.post("/webhooks/payments", express.json(), (req, res) => {
// In production, verify the request's signature header first
const event = req.body;
if (event.type === "payment.succeeded") {
markOrderAsPaid(event.data.orderId);
}
// Reply quickly with 200 so the sender does not retry
res.sendStatus(200);
});Sık sorulan sorular
Webhook ile API arasındaki fark nedir?
Normal bir API çağrısında uygulamanız veriyi istediği zaman talep eder. Webhook'ta ise diğer uygulama bir olay gerçekleştiğinde veriyi size otomatik olarak gönderir; bu yüzden webhook'lar sıklıkla olay güdümlü (event-driven) ya da ters API olarak tanımlanır.
Webhook ile polling arasındaki fark nedir?
Polling, hiçbir şey değişmemiş olsa bile sunucudan belirli aralıklarla güncelleme istemek demektir. Webhook ise güncellemeyi tam olay gerçekleştiği anda bir kez iletir; bu hem daha hızlıdır hem de çok daha az istek kullanır.
Bir webhook'un güvenliği nasıl sağlanır?
HTTPS kullanın, göndericinin istek başlıklarına eklediği imzayı paylaşılan bir gizli anahtarla doğrulayın ve kontrolü geçemeyen ya da çok eski olan istekleri reddedin.
İlgili sayfalar
- APIBackend ve API'ler, s. 2API, bir yazılımın başka bir yazılımdan veri ya da işlem talep etmesini sağlayan, belgelenmiş ve öngörülebilir kurallar bütünüdür.
- HTTPWeb Geliştirme, s. 20HTTP, tarayıcıların, uygulamaların ve sunucuların basit bir istek-yanıt döngüsüyle web sayfaları ve veri alışverişi yapmasını sağlayan protokoldür.
- EndpointBackend ve API'ler, s. 11Endpoint, bir API'nin belirli bir kaynak veya eylem için istek alıp yanıt döndürdüğü, bir HTTP metoduyla birlikte kullanılan belirli bir URL'dir.
- CallbackProgramlamanın Temelleri, s. 5Callback, başka bir fonksiyona argüman olarak verilen ve o fonksiyonun bir iş bittiğinde ya da bir olay gerçekleştiğinde sonradan çağırdığı fonksiyondur.
- JSONBackend ve API'ler, s. 24JSON, yapılandırılmış veriyi anahtar-değer çiftleri ve listelerle saklayıp aktarmaya yarayan, insanın da makinenin de okuyabildiği hafif bir metin biçimidir.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- SSRFGüvenlik, s. 41SSRF, bir saldırganın sunucuyu kendi seçtiği bir hedefe istek göndermeye zorladığı ve çoğu zaman erişemeyeceği iç sistemlere ulaşabildiği bir zafiyettir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin