مقدمه ای بر Webhook یا وب هوک
در دنیای آنلاین امروزی که همه عناصر به یکدیگر مرتبط هستند، هیچ المانی نمی تواند به طور مجزا، خوب عمل کند. رسیدگی به امور، معمولا همیشه مستلزم مشارکت بین سرویس های مختلف است. نرم افزارهای فروشگاهی باید با سیستمهای پرداخت، سیستمهای پرداخت باید با سیستمهای بانکی و سیستمهای بانکی باید با حسابهای مشتریان ارتباط برقرار کنند.
توانایی سیستم های آنلاین مستقل، برای برقراری ارتباط با یکدیگر و به اشتراک گذاری داده ها، هسته اصلی سیستمی است که امروزه خدمات آنلاین را ارزشمند می کند. Webhook یا وب هوک یکی از چندین روش موجود برای تسهیل ارتباط بین سرویس های آنلاین است. در پایان این مقاله، به طور کامل متوجه خواهید شد که وب هوک چیست، چگونه کار می کند و چه زمانی باید از آن استفاده کنید.
Webhook یا وب هوک چیست؟
وب هوک یک درخواست HTTP است که توسط یک رویداد در سیستم مبدا ایجاد شده و اغلب همراه حجمی از داده ها، به سیستم مقصد ارسال می شود. وب هوک ها خودکار هستند. به عبارت دیگر، هنگامی که رویداد آنها در سیستم مبدا فعال می گردد، به طور خودکار ارسال می شوند. Webhook یا وب هوک، روشی را برای یک سیستم (مبدا) فراهم می کند تا در هنگام وقوع رویداد، با سیستمی دیگر (مقصد) ارتباط برقرار نماید و اطلاعات رویداد انجام شده را به اشتراک بگذارد.
تصویر(1)
کاربرد Webhook یا وب هوک چیست؟
براساس تعریف بالا، احتمالا متوجه هدف وب هوک شده اید. به بیان ساده، از webhook ها برای برقراری ارتباط رویداد موجود در یک سیستم با سیستمی دیگر، استفاده می شود و اغلب داده های مربوط به رویداد را به اشتراک می گذارند. با این حال، توضیح با استفاده از مثال همیشه آسانتر می باشد. بنابراین در ادامه یک مثال عملی از وب هوک، ذکر شده است.
فرض کنید مشترک یک سرویس استریم هستید. در ابتدای هر ماه، کارت اعتباری شما شارژ می شود و بانک شما باید این موضوع را از طریق پیامک یا ایمیل با شما در میان بگذارد. سیستم بانکی (مبدا) می تواند از یک Webhook یا وب هوک برای تماس با یک سرویس ایمیل یا پیامکی (مقصد) استفاده کند تا هر بار که کارت شما شارژ می شود بلافاصله یک اعلان بدهی برای شما ارسال نماید. همچنین سیستم بانکی اطلاعات مربوط به شارژ را ارسال می کند که سرویس ایمیل یا پیامکی از آن برای ایجاد یک پیام مناسب برای شما، استفاده خواهد کرد.
Webhook یا وب هوک ها چگونه کار می کنند؟
فرآیند درخواست وب هوک
برای اینکه یک سیستم بتواند وب هوک ها را ارسال کند، باید بتواند از این فرآیند پشتیبانی نماید. میتوانید با استفاده از درخواستهای HTTP، سیستم خود را برای ارسال انواع مختلف رویدادهای وب هوک، آماده سازی کنید. با این حال، webhookها در پلتفرمهای SaaS مانند GitHub، Shopify، Stripe، Twilio و Slack رایجتر هستند. این پلتفرم ها انواع مختلفی از رویدادها را بر اساس فعالیت هایی که در آنها اتفاق می افتند، پشتیبانی می کنند.
برای دریافت درخواستهای Webhook یا وب هوک، باید برای یک یا چند رویداد (که به عنوان موضوعات نیز شناخته میشوند) که پلتفرم برای آن وب هوک ارائه میکند، ثبت نام کنید. درخواست وب هوک، به یک نقطه خروجی در نرم افزار شما ارسال میشود. بنابراین باید یک نقطه خروج برای آن در نظر بگیرید و URL را به صورت *Webhook URL* برای آن رویداد ثبت کنید.
هنگامی که ثبت وب هوک برای یک رویداد با افزودن نقطه خروج کامل شد، هر بار که رویدادی رخ می دهد، درخواست های وب هوک را در URL مقصدی که ارائه کرده اید، دریافت خواهید کرد.
تصویر(2)
پردازش Webhook یا وب هوک
اکنون که با درخواست های وب هوک آشنا شده اید، باید برای دریافت آنها آماده شوید. وب هوک ها درخواست های HTTP معمولی هستند و باید به همین صورت آنها را پردازش نمود. ارائهدهنده وب هوک همیشه راهنمایی در مورد نحوه پیادهسازی آن، دریافت درخواست و همچنین دسترسی به فایل ها در صورت وجود، به همراه آن ارائه می دهد. فایل های وب هوک در فرمت های JSON یا XML کدگذاری می شوند.
وب هوک ها یک سیستم ارتباطی یک طرفه هستند اما بهتر است که یک کد وضعیت 200 یا 302 را برگردانید تا به نرم افزار مبدا اطلاع دهید که آن را دریافت کرده اید. همچنین توصیه میشود که عملیات درخواست Webhook یا وب هوک را در انتهای کار، غیرفعال کنید. زیرا برخی از نرم افزارهای مبدا میتوانند درخواست وب هوک را بیش از یک بار ارسال کنند. در این وضعیت، باید مطمئن شوید که پاسخ شما به یک درخواست، تکراری نیست. زیرا ممکن است سیستم را در معرض خطر قرار دهد.
POST یا GET وب هوک
ممکن است درخواستهای Webhook یا وب هوک را بهعنوان درخواستهای GET یا POST دریافت کنید، که بستگی به ارائهدهنده وب هوک دارد. درخواستهای GET وب هوک ساده هستند و به صورت یک رشته جستجو به آدرس وب هوک اضافه میشوند. درخواستهای POST وب هوک، به همراه درخواست خود اطلاعاتی نیز دارند و ممکن است دارای ویژگیهایی مانند توکنهای احراز هویت باشند.
مقایسه وب هوک و پولینگ
Polling یا "پولینگ" زمانی رخ می دهد که نرم افزار شما به صورت دوره ای یک API را فراخوانی می نماید تا شروع یک رویداد یا دریافت اطلاعات جدید را بررسی کند. از سوی دیگر، وب هوک ها زمانی که رویدادی در لحظه رخ می دهد، داده ها را برای نرم افزار شما ارسال می کنند. برای درک تفاوت بین این دو رویکرد، پولینگ را مانند مراجعه به اداره پست جهت بررسی تصور نمایید که قرار است بررسی نماید آیا نامه جدیدی دارید یا خیر. وب هوک اساساً به این معنی می باشد که هر بار نامه جدیدی دارید، فقط با ارائه آدرس خانه خود به پستچی، نامه در خانه به شما تحویل داده می شود.
پولینگ در مقایسه با وب هوک از نظر مصرف منابع، سنگین تر است. زیرا می تواند چندین درخواست شبکه را قبل از دریافت اطلاعات جدید بپذیرد. در حالی که Webhook یا وب هوک تنها زمانی درخواست های شبکه را انجام می دهد که اطلاعات جدیدی وجود داشته باشد.
تصویر(3)
چه زمانی از Webhook یا وب هوک استفاده می شود
زمانی از وب هوک ها استفاده کنید که می خواهید:
- از رویدادی در یک سیستم متصل، به صورت لحظه ای آگاه باشید.
- ارسال اطلاعات به مقصد موردنظر در لحظه مد نظر است.
- جایگزینی ارزان تر برای پولینگ را در نظر دارید.
نمونه هایی از این نوع سناریوها عبارتند از:
- یک فروشگاه اینترنتی که ایجاد فاکتور فروش را به شما اطلاع می دهد.
- فروشگاههای اینترنتی در صورت اتمام موجودی کالای خاص، به بازرگانان اطلاع میدهند.
- درگاه پرداخت که در مورد پرداخت انجام شده، تجار را مطلع می کند.
- سیستم های نظارتی که به مدیران در مورد خطا یا فعالیت غیرعادی در یک سیستم، هشدار می دهند.
- همگام سازی اطلاعات بین سیستم ها. به عنوان مثال زمانی که کاربر ایمیل خود را در سیستم منابع انسانی یا CRM شما تغییر می دهد، ایمیل او در سیستم حقوق و دستمزد یا فاکتور نیز تغییر می کند.
نمونه سایت هایی که از Webhook یا وب هوک استفاده می کنند
وب سایت هایی که از وب هوک ها برای اطلاع رسانی و اشتراک گذاری اطلاعات استفاده می کنند، عبارتند از:
- وب هوک های Twilio اطلاعات مربوط به رویدادهایی مانند پیامک های ارسالی، تماس های صوتی و احراز هویت را منتقل می کنند.
- وب هوک های Slack، پیام هایی را از طریق نرم افزار Slack ارسال می نمایند.
- وب هوک های Discord، پیام ها را از طریق کانال های Discord ارسال می کنند.
- وب هوک های Stripe، زمانی که رویدادی در حساب شما رخ می دهد، به نرم افزار اطلاع می دهند.
نتیجه گیری
اطلاعات بر وب حاکم هستند و دریافت آنی اطلاعات باعث می شود خدمات آنلاین بسیار کارآمد و پاسخگو نیازهای مشتری باشند. فناوری Webhook یا وب هوک روشی غیر پیچیده را برای اشتراک گذاری آنی اطلاعات در میان پلتفرم های آنلاین ارائه می دهد. یک درخواست وب هوک میتواند بین مقاصد متعددی که به اطلاعات نیاز دارند، در فرآیندی به نام fanning out توزیع شوند. این قابلیت به سیستم های منبع اجازه می دهد تا با نرم افزارهای بیشتری ارتباط برقرار کرده و اطلاعات را در سراسر وب توزیع کنند.