सभी लेख
क्लाउड सेवाओं से रिक्वेस्ट इंस्पेक्टर पैनल दिखाते लैपटॉप में बहती एक वेबहुक रिक्वेस्ट।
webhook debuggingStripeGitHublocal testing

वेबहुक को लोकल डीबग करें: पूरी गाइड

लोकल वेबहुक डीबगिंग तेज़, दोहराने योग्य और प्रोडक्शन व्यवहार के करीब होनी चाहिए। फिर भी ज़्यादातर टीमें बुनियादी सवालों का जवाब पाने के लिए ही स्टेजिंग पर डिप्लॉय करती हैं: क्या कॉलबैक आया, क्या पेलोड मान्य था, और क्या सिग्नेचर सत्यापन पास हुआ?

केवल-स्टेजिंग वेबहुक टेस्टिंग की समस्या

डिफ़ॉल्ट वर्कफ़्लो जाना-पहचाना लगता है: स्टेजिंग पर शिप करें, प्रोवाइडर एंडपॉइंट कॉन्फ़िगर करें, इवेंट ट्रिगर करें, लॉग जाँचें, कोड ठीक करें, फिर से डिप्लॉय करें। हर चक्र समय लेता है और साझा एनवायरनमेंट से शोर जोड़ता है।

जब आपका लक्ष्य handler लॉजिक, idempotency या पेलोड पार्सिंग को सत्यापित करना है, तो यह अतिरिक्त बोझ ग़ैर-ज़रूरी है। आपको अपने डेव स्टैक पर पूरा नियंत्रण रखते हुए वेबहुक को लोकल डीबग करने का एक भरोसेमंद तरीका चाहिए।

localhost पर वेबहुक टेस्ट करने के लिए क्या चाहिए

अपनी मशीन पर प्रोवाइडर कॉलबैक पाने के लिए, तीन चीज़ें मिलनी चाहिए:

  • एक चालू लोकल ऐप जिसमें वेबहुक रूट सक्षम हों।
  • उस ऐप से मैप किया गया एक पब्लिक HTTPS एंडपॉइंट।
  • रिक्वेस्ट दृश्यता: हेडर, बॉडी, स्टेटस और लेटेंसी।

यह ठीक वही है जो localhost टनलिंग देती है: बाहरी सेवाओं से आपके लोकल प्रोसेस तक एक सुरक्षित पुल।

चरण-दर-चरण: PortPreview के साथ वेबहुक को लोकल डीबग करें

  1. लक्ष्य पोर्ट पर अपना ऐप लोकल शुरू करें।
  2. एक टनल URL बनाने के लिए npx portpreview 3000 चलाएँ।
  3. HTTPS URL को अपने प्रोवाइडर डैशबोर्ड में पेस्ट करें (Stripe, GitHub, Twilio, Slack आदि)।
  4. टेस्ट इवेंट ट्रिगर करें और हर कॉलबैक को रियल टाइम में जाँचें।
  5. वेबहुक रीप्ले से कैप्चर की गई रिक्वेस्ट दोबारा भेजें ताकि अपस्ट्रीम सिस्टम को फिर से ट्रिगर किए बिना सुधार सत्यापित हो सकें।

PortPreview मूल हेडर बनाए रखता है, इसलिए लोकल टेस्टिंग के दौरान प्रोवाइडर के सिग्नेचर चेक सार्थक बने रहते हैं।

प्रोवाइडर के अनुसार वेबहुक डीबगिंग चेकलिस्ट

Stripe वेबहुक लोकल टेस्टिंग

Stripe टेस्ट मोड इवेंट का उपयोग करके इवेंट-टाइप रूटिंग, idempotency कीज़ और सिग्नेचर सत्यापन जाँचें। यह पुष्टि करने के लिए कि आपका handler nested ऑब्जेक्ट सही पार्स करता है, कच्चे पेलोड बॉडी कैप्चर करें। Stripe वेबहुक लोकल टेस्टिंग पर समर्पित गाइड देखें।

GitHub वेबहुक डीबगिंग

डिलीवरी हेडर, इवेंट फ़िल्टर और repository-स्तरीय ऑथराइज़ेशन पथ सत्यापित करें। जब GitHub विफल एंडपॉइंट पर पुनः प्रयास करता है तो डुप्लिकेट-इवेंट हैंडलिंग टेस्ट करने के लिए डिलीवरी दोबारा भेजें। पूरा सेटअप GitHub वेबहुक लोकल टेस्टिंग में।

Twilio और मैसेजिंग कॉलबैक

form-encoded पेलोड और रिस्पॉन्स टाइमिंग जाँचें। लोकल डीबगिंग प्रोडक्शन ट्रैफ़िक से पहले timeout और retry व्यवहार पकड़ने में मदद करती है। Twilio वेबहुक लोकल टेस्टिंग पर हमारी समर्पित गाइड देखें।

भरोसेमंद लोकल वेबहुक टेस्ट के लिए सर्वोत्तम अभ्यास

लोकल मोड में सिग्नेचर सत्यापित करें। डेवलपमेंट के दौरान सुरक्षा जाँच को बायपास न करें; उसी कोड पथ को टेस्ट करें जो प्रोडक्शन में चलता है।

रिट्राई और डुप्लिकेट सिमुलेट करें। प्रोवाइडर एक ही इवेंट एक से अधिक बार डिलीवर कर सकते हैं। रीप्ले टूलिंग यह पुष्टि करने में मदद करती है कि आपके handler idempotent बने रहें।

रिक्वेस्ट इतिहास कैप्चर करें। फ़ीचर कार्य के दौरान हर कॉलबैक के मेथड, पथ, हेडर और पेलोड आकार का लॉग रखें।

स्टेजिंग डिप्लॉय की उठापटक घटाएँ। तेज़ इटरेशन के लिए लोकल वेबहुक डीबगिंग का उपयोग करें, फिर रिलीज़ से पहले स्टेजिंग पर अंतिम इंटीग्रेशन जाँच चलाएँ।

लोकल डीबगिंग से स्टेजिंग पर कब जाएँ

लोकल टनल handler डेवलपमेंट और पेलोड जाँच के लिए आदर्श हैं। प्रबंधित सीक्रेट, नेटवर्क नीतियों और पूर्ण रिलीज़ पाइपलाइन जैसी एनवायरनमेंट-विशिष्ट जाँच के लिए स्टेजिंग पर जाएँ।

रोज़मर्रा के कॉलबैक डेवलपमेंट के लिए, localhost टनल कम इन्फ़्रास्ट्रक्चर बोझ के साथ तेज़ फ़ीडबैक देता है। अगर आप टूल की तुलना कर रहे हैं, रिक्वेस्ट जाँच और ओपन-सोर्स पारदर्शिता पर केंद्रित हमारी ngrok विकल्प गाइड और PortPreview बनाम localtunnel तुलना देखें।

वेबहुक-प्रथम टनल वर्कफ़्लो तक अर्ली एक्सेस के लिए PortPreview वेटलिस्ट में शामिल हों

अक्सर पूछे जाने वाले प्रश्न

वेबहुक प्रोवाइडर localhost तक क्यों नहीं पहुँच सकते?
वेबहुक प्रोवाइडर पब्लिक इंटरनेट पर रिक्वेस्ट भेजते हैं। 127.0.0.1 जैसे localhost पते केवल आपकी मशीन पर पहुँच योग्य हैं, इसलिए प्रोवाइडर को एक पब्लिक URL चाहिए जो आपके लोकल सर्वर पर फ़ॉरवर्ड करे।
मैं Stripe वेबहुक को लोकल कैसे टेस्ट करूँ?
अपना ऐप लोकल चलाएँ, PortPreview से एक टनल शुरू करें, फिर अपने Stripe वेबहुक एंडपॉइंट को जेनरेट किए गए HTTPS URL पर सेट करें। टेस्ट इवेंट ट्रिगर करें और अपने रिक्वेस्ट लॉग में हर डिलीवरी जाँचें।
क्या मैं स्टेजिंग पर डिप्लॉय किए बिना वेबहुक डीबग कर सकता हूँ?
हाँ। टनल के साथ लोकल वेबहुक डीबगिंग कॉलबैक टेस्टिंग के लिए ज़्यादातर अस्थायी स्टेजिंग डिप्लॉय की जगह ले लेती है, जिससे इटरेशन समय मिनटों से सेकंडों तक घट जाता है।