آشنایی سریع با وب‌هوک‌ها

گردآوری و تالیف : ارسطو عباسی
تاریخ انتشار : 16 دی 1397
دسته بندی ها : برنامه نویسی

سیستم عصبی ما یکی از اعجاب‌ انگیزترین چیزهایی است که در کل دنیا وجود دارد. تنها یک لحظه به مغز ما فکر کنید: مغز ما به صورت مداوم در حال کار است و پیام‌هایی را در سرتاسر بدنمان منتقل می‌کند. مغز به ما می‌گوید که چه زمانی به خواب، غذا و… نیاز داریم.

تصورش را بکنید که مجبور باشید تمام این آگاهی‌ها را به صورت دستی مدیریت کنید. زندگی به این شکل از کنترل خارج می‌شود. بسیاری از کنش‌ها مانند گرسنه، خسته و… بودن به صورت خودکار مدیریت می‌شود و هشدار دادن آن‌ها نیز به خوبی انجام پذیر است. 

حال خبر خوب آن است که چنین فرایند خودکارسازی و هشداردهی را می‌توانید به عنوان بخشی از پروژه‌های توسعه وب‌تان استفاده بکنید. 

یک راه برای انجام چنین کاری استفاده از Webhookها است. جالب اینجاست که بدانید بسیاری از اوقات بدون داشتن آگاهی با آن‌ها کار می‌کنید. البته ممکن است این موضوع را با APIها نیز اشتباه بگیرید. 

با این حال بگذارید که در این مطلب به خوبی شما را با وب‌هوک‌ها و شیوه کار کردن آن‌ها آشنا کنیم.

وب‌هوک‌ یا Webhook چیست؟

به صورت مختصر: وب‌هوک‌ها راهی برای اپلیکیشن‌ها در جهت خودکارسازی فرایند ارتباط بین یکدیگر است. 

  • MailChimp از وب‌هوک برای ثبت نام کاربران از وبسایت‌تان به خبرنامه‌تان استفاده می‌کند. 
  • Paypal از وب‌هوک برای مطلع کردن اپلیکیشن حسابداری‌تان در زمان پرداخت قبض توسط مشتری استفاده می‌کند. 
  • Shopify برای بروزرسانی سیستم فروشگاهی از وب‌هوک‌ استفاده می‌کند. با این کار بعد از هر بروزرسانی شما نیاز پیدا نخواهید کرد که اطلاعات معاملات جدید را به صورت دستی وارد کنید.

مثال‌های بسیار زیادی در این زمینه وجود دارد که می‌توانید آن‌ها را در نظر بگیرید. با این حال برای برنامه‌نویسان که بهتر این موضوع را درک بکنند می‌توانیم الگوی observer را در نظر بگیریم.

نوتیفیکیشن مرورگرتان را به عنوان یک مثال در نظر بگیرید.

مرورگر (به عنوان subject) به کاربر (به عنوان observer) در زمان رخدادن یک اتفاق هشدار می‌دهد. 

این رویکرد باعث می‌شود سیستم‌های مبتنی بر رویداد که از غیر همزمانی استفاده می‌کنند بهتر بتوانند همه چیز را مدیریت بکنند. در این رویکرد بجای آنکه هر بار کاربر از سرور بپرسد که تغییری در وضعیت به وجود آمده است، به سرور می‌گوید که هرگاه تغییری بوجود آمد به من خبر بده!

با در نظر گرفتن چنین شرایطی مطمئنا به این نتیجه خواهیم رسید که چنین سیستمی بسیار کارا و بهینه است اما روند پیاده‌سازی آن کمی سخت‌تر از حالت مرسوم می‌شود.

الگوی observer را می‌توان در هر سیستم مبتنی بر رویدادی پیاده‌سازی کرد اما وب‌هوک‌ها از طرف وب محدود می‌شوند. در واقع این محدودیت مربوط به این می‌شود که در وب‌هوک‌ها تمام ارتباطات و تعاملات باید از یک پروتکل که معمولا http است رد شود.

یک وب‌هوک چگونه عمل می‌کند؟

شما می‌توانید از طریق یک URL یک وب‌هوک را برای زمانی که رویدادی اتفاق می‌افتد پیاده‌سازی بکنید. این قدم معمولا از طریق رابط کاربری و یا از طریق یک API انجام می‌شود.

با این کار می‌توانید یک حالت routing برای معلوم کردن زمان و مکان اجرای یک رویداد را در نظر بگیرید.

در این حالت دیگر سیستم نیاز ندارد که چیستی سیستم اجرایی را درک بکند، تنها کافی‌ست بداند که رویداد در کجا اتفاق می‌افتد.

به شکل زیر دقت کنید:

در این حالت وقتی یک رویداد در A اتفاق می‌افتد، سیستم B آن را از طریق یک url انتخابی دریافت می‌کند. حال سیستم B نه تنها می‌داند که یک رویداد اتفاق افتاده‌ است بلکه می‌تواند به آن نیز جواب بدهد.

مسیریابی در این سیستم باید از طریق یک درخواست HTTP POST قابل دسترس باشد.

خب شاید سوال بپرسید که چرا منحصرا این کار از طریق POST انجام می‌شود. جواب این سوال آن است که Post به شما این قابلیت را می‌دهد تا داده‌هایی مانند Json و یا سند xml را در درخواست‌های خود قرار دهید. 

شما از طریق این فایل‌ها و محتویات است که متوجه می‌شوید وب‌هوک دقیقا چه گونه به یک رویداد پاسخ می‌دهد. 

یکی دیگر از ویژگی‌هایی که باعث می‌شود وب‌هوک‌ها بسیار قدرتمند باشند این است که به شما قدرت انتخاب بین گزینه‌های عمومی و خصوصی را می‌دهند. در حالت خصوصی تنها یک سیستم یا محدودیت‌های دیگری که سازنده وب‌هوک‌ به صورت شخصی می‌تواند اعمال کند، از وب‌هوک استفاده نماید. در نتیجه همه به این وب‌هوک دسترسی نخواهند داشت و نمی‌توانند آن را دنبال کنند.

ابزارهایی برای توسعه وب‌هوک‌ها

در پایان

امیدوارم که این مطلب توانسته باشد تا حدی شما را با وب‌هوک‌ها آشنا سازد. هدفی که من از نوشتن این مطلب داشتم این بود که واقعا شما را به سمت یادگیری وب‌هوک‌ها سوق بدهم. با یادگیری این تکنولوژی می‌توانید اپلیکیشن‌های قدرتمند‌تر همراه با مقیاس‌پذیری بالاتری را ایجاد کنید. 

شما در ارتباط با وب‌هوک‌ها چه فکر می‌کنید؟

منبع

مقالات پیشنهادی

آشنایی با ساختار اپلیکیشن Ember.js

در مقاله های پیش به معرفی Ember.js پرداختیم. اینبار می خواهیم با ساختار Ember.js آشنا بشیم و یک اپلیکیشن ساده با اون بسازیم. 

آشنایی مقدماتی با NPM

نودجی‌اس این امکان را برای ما فراهم کرده که بتوانیم اپلیکیشن‌های جاوااسکریپتی را در طرف سرور ایجاد کنیم. نودجی‌اس با استفاده از سی‌پلاس‌پلاس نوشته و ر...

هر چه که باید درباره JAMstack بدانید

وقتی که بحث توسعه وب در میان است، انواع مختلفی از Stackهای توسعه وجود دارند؛ استک LAMP، استک MEAN و استک MERN. با تکامل توسعه وب مدرن، مورد جدیدی به ع...

شروع کار با Jekyll

Jekyll یک پلتفرم ساده برای توسعه و طراحی وبسایت‌های استاتیک و حتی بلاگ مانند است. این پلتفرم با استفاده از زبان روبی توسعه داده شده است. در یک اصطلاح...