वेबहुक क्या है?
वेबहुक वह HTTP रिक्वेस्ट है जो कोई सर्विस आपके रजिस्टर किए URL पर किसी घटना पर भेजती है — भुगतान सेटल हुआ, मैसेज डिलीवर हुआ, बिल्ड पूरा हुआ — ताकि आपका सिस्टम पोलिंग के बजाय घटनाओं पर प्रतिक्रिया दे। इसे टेस्ट करने का मतलब है जो वास्तव में भेजा गया उसे कैप्चर करना (मेथड, हेडर, बॉडी), रिट्राई और क्रम जाँचना, और उस सिग्नेचर को सत्यापित करना जो साबित करता है कि कॉल भेजने वाले से ही आई है।
सुरक्षा नोट: वेबहुक एंडपॉइंट एक सार्वजनिक URL है जिस पर कोई भी पोस्ट कर सकता है। भेजने वाले के सिग्नेचर (आमतौर पर कच्ची बॉडी पर HMAC) को कॉन्स्टेंट-टाइम तुलना से सत्यापित करें, पुराने टाइमस्टैम्प अस्वीकार करें, और पेलोड को अविश्वसनीय इनपुट मानें।
गाइड पढ़ें: API टेस्टिंग क्या है? REST API कैसे टेस्ट करें
Webhook पेलोड फ़ॉर्मेटर कैसे इस्तेमाल करें
- webhook बॉडी पेस्ट करें (और अगर आपके पास हों तो रिक्वेस्ट हेडर भी)।
- payload तुरंत फ़ॉर्मेट हो जाता है; अवलोकन और अहम फ़ील्ड की तालिका पढ़ें।
- event के समय की जाँच के लिए timestamp तालिका और बड़े payload में घूमने के लिए tree इस्तेमाल करें।
Webhook पेलोड फ़ॉर्मेटर की खूबियाँ
- JSON को pretty-print करता है, form-encoded बॉडी डिकोड करता है, XML को पढ़ने लायक़ रखता है
- बॉडी और वैकल्पिक हेडर से प्रोवाइडर तथा event टाइप पहचानता है
- id, event टाइप, स्टेटस, राशि, मुद्रा, ईमेल और URL उभारता है
- Unix (सेकंड/मिलीसेकंड) और ISO timestamp को सापेक्ष समय के साथ बदलता है
- tree व्यू, वैकल्पिक key सॉर्टिंग, साइज़ के आँकड़े, लाइव फ़ॉर्मैटिंग
Webhook पेलोड फ़ॉर्मेटर का उदाहरण
Stripe का payment_intent.succeeded इवेंट
इनपुट:
{"id":"evt_1PZx…","type":"payment_intent.succeeded","created":1725184800,"data":{"object":{"amount":19900,"currency":"sar","status":"succeeded"}}}आउटपुट:
Provider: Stripe · Event: payment_intent.succeeded · Event id: evt_1PZx…
$.data.object.amount amount 19900 199.00 if the value is in minor units
$.created timestamp 1725184800 → 2024-09-01T10:40:00.000Z (about a year ago)Webhook पेलोड फ़ॉर्मेटर के बारे में अक्सर पूछे जाने वाले सवाल
क्या-क्या उभारा जाता है?
event टाइप, id, स्टेटस, राशि (minor units के संकेत के साथ), मुद्रा, timestamp (ISO 8601 और सापेक्ष समय में बदले हुए), ईमेल, नाम, संदर्भ और URL। जो वैल्यू secret जैसी लगती हैं, उन्हें तालिका में छिपा दिया जाता है।
क्या यह form-encoded webhook संभाल सकता है?
हाँ — Twilio जैसी application/x-www-form-urlencoded बॉडी फ़ॉर्मैट करने से पहले JSON में डिकोड कर ली जाती हैं।
क्या यह सिर्फ़ बॉडी से प्रोवाइडर पहचान लेता है?
अक्सर हाँ: Stripe event, GitHub payload, GitLab, PayPal, Slack, Shopify और Twilio की बनावट पहचानी जा सकती है। रिक्वेस्ट हेडर जोड़ने से पहचान भरोसेमंद हो जाती है।
क्या मेरा payload अपलोड होता है?
नहीं — फ़ॉर्मैटिंग और पहचान आपके ब्राउज़र में ही चलती हैं।
संदर्भ
- RFC 9421: HTTP Message SignaturesHTTP मैसेज पर हस्ताक्षर करने का मानक तरीका ताकि रिसीवर उनके स्रोत और अखंडता की जाँच कर सके — आधुनिक वेबहुक सिग्नेचर का आधार।
- RFC 2104: HMAC: Keyed-Hashing for Message AuthenticationHMAC संरचना: एक सीक्रेट की और हैश फ़ंक्शन मिलकर मैसेज ऑथेंटिकेशन कोड कैसे बनाते हैं।
- OWASP Cheat Sheet Series: REST SecurityREST API के सुरक्षा नियम: HTTPS, हर रिक्वेस्ट पर ऑथेंटिकेशन, इनपुट वैलिडेशन, सुरक्षित एरर रिस्पॉन्स, रेट लिमिटिंग।