dev-tools

Webhook

Bir webhook, bir sistemin başka bir sisteme, alıcı sistemin önceden kaydettiği bir URL'ye bir HTTP POST isteği göndererek, bir şey olduğu anda gerçek zamanlı olarak bildirim yapmasının bir yoludur — bir istemcinin sunucuya "henüz bir şey değişti mi?" diye tekrar tekrar sorduğu tipik API kullanımının tersi. Webhook'larla, sunucu yalnızca gerçekten bildirilecek bir şey olduğunda bir bildirim gönderir; bu, sorgulamadan (polling) çok daha verimlidir ve bir sorgulama aralığının doğasında bulunan gecikme yerine neredeyse anlık bildirim sağlar. Neredeyse her büyük API odaklı platform webhook'ları destekler: Stripe bir ödeme başarılı olduğunda bir webhook tetikler, GitHub bir pull request açıldığında bir tane tetikler ve Anthropic'e komşu SaaS araçları, uzun süren bir AI işi (toplu işleme işi gibi) tamamlandığında downstream bir sistemi bilgilendirmek için yaygın olarak webhook kullanır. AI/SaaS geliştiricileri için neden önemli: webhook'lar, her iki tarafın da diğerini sürekli sorgulamasına gerek kalmadan bağımsız sistemleri gerçek zamanlı olarak bağlamanın standart entegrasyon desenidir — Zapier ve Make.com gibi otomasyon platformlarının belkemiğidirler ve olay güdümlü herhangi bir şey için gereklidirler; örneğin bir Stripe ödemesi başarısız olduğu anda bir CRM'i güncellemek veya bir kullanıcı onboarding'i tamamladığı anda downstream işlemeyi başlatmak gibi. Webhook endpoint'leri keyfi POST isteklerini kabul eden genel URL'ler olduğundan, isteğin gerçekliğini doğru şekilde doğrulamak (tipik olarak paylaşılan bir gizli anahtar kullanan bir imza kontrolü aracılığıyla) kritiktir — doğrulanmamış bir webhook endpoint'i gerçek bir güvenlik riskidir, çünkü URL'yi keşfeden herkes sahte olaylar gönderebilir. Nasıl çalışır: alıcı uygulama, gönderen platforma bir URL kaydeder (genellikle bir panel veya API çağrısı aracılığıyla) ve hangi olaylar hakkında bilgilendirilmek istediğini belirtir. Bu olay gerçekleştiğinde, gönderen platform kayıtlı URL'ye olayı açıklayan bir JSON yükü ile bir HTTP POST gönderir; alıcı endpoint hızlı bir şekilde (tipik olarak birkaç saniye içinde) alındığını onaylamak için bir 2xx durum koduyla yanıt vermelidir, aksi takdirde gönderen, teslimatın başarısız olduğunu varsayarak geri çekilme (backoff) ile yeniden dener. Uygulamalı örnek: bir SaaS şirketi, bir kullanıcı bir Stripe checkout'unu tamamladığı anda ona ücretli bir özelliğe erişim vermek istiyor. `checkout.session.completed` olayına abone olan bir `POST /webhooks/stripe` webhook endpoint'i Stripe'a kaydediyorlar. Bir müşteri ödeme yaptığında, Stripe bu URL'ye `{"type": "checkout.session.completed", "data": {"object": {"customer_email": "user@example.com", "amount_total": 4900}}}` gibi bir JSON yüküyle bir POST isteği gönderir. Endpoint, isteğin bunun gerçekten Stripe'tan geldiğini (sahte bir istek değil) doğrulamak için Stripe imza başlığını kendi webhook gizli anahtarlarına karşı doğrular, ardından o kullanıcının hesabını veritabanlarında `plan: "pro"` olarak günceller ve bir `200 OK` döndürür — bunların tümü, hiçbir sorgulama gerektirmeden gerçek ödemenin yaklaşık bir saniyesi içinde gerçekleşir.

İlgili terimler

Daha fazla Geliştirici Araçları terimi