Webhook Nedir ve Nasıl Çalışır?
Webhook, bir olay gerçekleştiğinde bir sistemin başka bir sisteme otomatik HTTP isteği göndermesidir. Çalışma mantığı, örnek ve güvenlik ilkeleri.
Webhook nedir?
Webhook, bir olay gerçekleştiğinde bir sistemin başka bir sisteme kendiliğinden HTTP isteği göndermesidir. Türkçede web kancası ya da geri çağırma URL'si olarak da anılır. Alıcı taraf bir adres verir; gönderen taraf ilgili olay oluştuğunda o adrese olayın bilgisini iletir.
Temel fark şudur: bilgiyi sormak yerine bilgi size gelir. Alıcı sürekli kontrol etmek zorunda kalmaz.
Webhook nasıl çalışır?
Akış genellikle dört adımda ilerler: • Kayıt: Alıcı, gönderen sisteme bir uç nokta adresi tanımlar ve hangi olaylarla ilgilendiğini seçer. • Olay: Gönderen sistemde bir şey olur, örneğin bir ödeme tamamlanır. • Gönderim: Gönderen sistem olayı anlatan bir yükü (çoğunlukla JSON) alıcının adresine POST isteğiyle yollar. • Yanıt: Alıcı isteği aldığını başarılı bir HTTP durum koduyla onaylar ve asıl işi gerekirse sonra yapar.
Alıcı yanıt vermezse ya da hata dönerse, gönderen çoğu sistemde isteği belirli aralıklarla yeniden dener.
Küçük bir örnek
Örneğin bir e-ticaret sitesi ödeme sağlayıcısını kullanıyor olsun. Müşteri ödemeyi tamamladığında sağlayıcı, sitenin verdiği webhook adresine ödemenin başarılı olduğunu bildiren bir istek gönderir. Site bu isteği alınca siparişi onaylı duruma geçirir, stoğu düşer ve müşteriye e-posta yollar.
Webhook olmasaydı site, sağlayıcıya sürekli ödeme durumunu sormak zorunda kalır, bu da gereksiz istek ve gecikme demek olurdu.
Webhook ile API arasındaki fark
Klasik API çağrısında istemci sunucuya sorar ve yanıt alır; inisiyatif istemcidedir. Webhook'ta ise inisiyatif olayı yaşayan sistemdedir.
- Yön: API'de istemciden sunucuya, webhook'ta sunucudan alıcıya.
- Zamanlama: API çağrısı istenen anda yapılır, webhook olay olduğunda tetiklenir.
- Kullanım: Veri okumak ve işlem başlatmak için API, değişikliklerden haberdar olmak için webhook.
İkisi çoğunlukla birlikte kullanılır: webhook ile haber alınır, ayrıntı gerekirse API ile çekilir.
Webhook güvenliği ve güvenilirliği
Webhook adresi dışarıdan erişilebilir olduğu için doğrulama şarttır. Yaygın uygulamalar şunlardır: • İmza doğrulama: Gönderen, yükü paylaşılan bir sırla imzalar; alıcı imzayı kontrol eder. • HTTPS kullanımı ve uç nokta adresinin tahmin edilmesini zorlaştırmak. • Tekrar işlemeye dayanıklılık: Aynı olay iki kez gelebileceği için işlem idempotent tasarlanır, yani tekrar edildiğinde aynı sonucu verir. • Hızlı yanıt ve kuyruklama: Alıcı olayı önce kaydedip hemen onay döner, işi arka planda yapar.
Yeniden deneme ve sıra sorunları da hesaba katılmalıdır; olayların her zaman gönderildiği sırayla gelmeyeceği varsayılır.
Mindset programlarında webhook
Webhook Tasarımı ve Güvenilir Olay Yayınlama programı olay sözleşmesi ve teslim modeli, güvenlik ve doğrulama, güvenilirlik ve gözlemlenebilirlik modüllerinden oluşur.
API Mimarisinde Asenkron ve Olay Tabanlı Entegrasyon programında ise webhook ve geri çağrı tabanlı entegrasyon, mesajlaşma desenleri, olay şeması ve sürümleme gibi başlıklar yer alır.
İlgili Mindset programı
Webhook Tasarımı ve Güvenilir Olay Yayınlama
Sık sorulan sorular
Webhook ve polling arasındaki fark nedir?
Polling'de alıcı belirli aralıklarla kaynağa gidip değişiklik olup olmadığını sorar. Webhook'ta kaynak değişiklik olunca alıcıya haber verir. Webhook gereksiz istekleri azaltır ve bilgiyi daha çabuk iletir; polling ise alıcının denetimi altında kalır.
Webhook'a hangi HTTP yöntemi kullanılır?
Çoğu sistem olay yükünü POST isteğiyle gönderir. Yük genellikle JSON biçimindedir ve istekle birlikte içeriğin türünü bildiren başlık ile çoğu zaman imza başlığı gelir. Alıcı, işlemi aldığını başarılı bir durum koduyla hızlıca onaylamalıdır; ağır işi sonra yapmak daha güvenlidir. Yöntem ve biçim ilgili servisin dokümantasyonunda belirtilir.
Webhook isteği kaybolursa ne olur?
Birçok servis alıcıdan başarılı yanıt alamazsa isteği yeniden dener. Yine de teslim kesin değildir; bu yüzden kritik akışlarda alıcı tarafında kayıt tutulur ve gerekirse API ile durum tekrar sorgulanır.
Webhook adresi nasıl güvenli hale getirilir?
İsteğin gerçekten beklenen kaynaktan geldiğini imza ile doğrulamak, HTTPS kullanmak ve aynı olayın tekrarına karşı işlemi idempotent yazmak temel adımlardır. Gizli anahtar kodun içine değil, güvenli bir yapılandırma alanına konur.