وب

WebHook چیست؟

97/02/07

در این مقاله قصد داریم تا با مفهوم WebHook آشنا شویم و کاربرد آن را بررسی کنیم. WebHook یک callback از نوع HTTP است. گاهی یک اتفاقی رخ می‌دهد و یک رویداد به عنوان پاسخ آن ایجاد می‌شود. به این رویداد callback می‌گویند. در حقیقت WebHook نیز یک پیام از نوع HTTP Post است که پس رخ دادن یک اتفاق ایجاد می‌شود.

یک Web Application که WebHook در آن پیاده سازی شده باشد, پس از اتفاق افتادن یک عمل مشخص, یک پیام را با متد POST به یک URL مشخص ارسال می‌کند و گیرنده پس از دریافت این پیام, از وقوع آن عمل مطلع می‌گردد. همانطور که از ساختار آن مشخص است, دیگر نیاز به polling برای دریافت اطاعات جدید نداریم.

برای کاربران, WebHook تنها یک راه برای اطلاع از وقوع یک رویداد است که در واقع به آن pushing گویند. این عمل در مقابل polling قرار می‌گیرد. پیش از این نیاز بود تا به صورت متناوب و در زمان های مشخص یک درخواست به web application ارسال شود و مقادیر جدید را دریافت کند. در بعضی از پروژه ها این عمل باعث می‌شود تا یک بار بیهوده بر روی server قرار گیرد. زیرا معمولا داده ها به عوامل خارجی وابسته هستند و نمی‌توان زمان دقیقی را برای دریافت اطلاعات جدید تعیین کرد. بنابراین برای مواردی از این دست, WebHook می‌تواند یک انتخاب مناسب باشد.

علت دیگری که می‌توانیم webHook را انتخاب کنیم, عمل piping است. pipe به زمانی گفته می‌شود که داده به صورت real time دریافت می‌شود و پس از انجام یکسری فرآیند ها آنرا منتشر کند. برای مثال یک WebHook ایجاد می‌کنیم تا هر زمان یک پست از مجموعه صفر تا قهرمان منتشر شد, یک پیام اطلاع رسانی در Twitter نیز منتشر شود. در این مثال ما پست جدید را عینا منتشر نمی‌کنیم بلکه از وقوع آن رویداد استفاده می‌کنیم.

plugin یکی دیگر از ویژگی های WebHook است. با استفاده از این ویژگی می‌توانیم یک برنامه را توسعه دهیم. به این صورت که می‌توانیم یکسری از داده ها را دریافت و پس از پردازش آن, مقدار معینی را برگردانیم. نمونه بارز آن Facebook است. Application هایی هستند که بر روی Facebook platfom توسعه داده شده‌اند. وقتی یک کاربر می‌خواهد به یک application دسترسی پیدا‌ کند, Facebook یک WebHook را برای برنامه ارسال می‌کند و به برنامه اطلاع می‌دهد که یک کاربر قصد دارد تا از این برنامه استفاده کند. برنامه نیز در پاسخ آدرسی که کاربر باید به آن هدایت شود را مشخص می‌کند. به این ترتیب با استفاده از خاصیت plugin می‌توانیم یک داده را ارسال کنیم و بر اساس پاسخ دریافت شده, از آن داده استفاده کنیم. با استفاده از این امکان می‌توانیم برنامه های تحت وب را گسترش دهیم.

چگونگی استفاده از WebHook کاملا بستگی به پروژه و نیازمندی های آن دارد. گاهی می‌خواهیم مانند IRC, یک Notiifcation را برای کاربران به صورت نامه الکترونیکی ارسال کنیم. می‌توانیم در پروژه ها داده ها را به صورت Real time در برنامه های دیگر قرار دهیم. برای مثال می‌توانیم سرویس های زیادی را با استفاده از WebHook به Slack اضافه کنیم و برای هریک نیز یک channel مشخص کنیم. در این صورت می‌توانیم اطلاعات دریافتی را به صورت دسته بندی شده نگهداری کنیم. یکی از نمونه هایی که در پروژه های نرم افزاری استفاده می‌شود این است که git پروژه خود را به slack تیم نرم افزاری متصل می‌کنند. به این ترتیب پس از هربار commit توسط تیم توسعه, باقی اعضا نیز مطلع می‌شوند و این همگام سازی می‌تواند به صورت خودکار در مجوعه انجام شود.

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

با ما همراه باشید.

تفاوت Wireframe، Prototype و Mockup

امیرحامد احمدزاده نیاک

نام‌گذاری اصولی کلاس‌ها در CSS با متد BEM

رضا مجیدی

چرا باید از Codepen استفاده کنیم؟

رضا مجیدی