اکثر توسعهدهندگان وب یا کاربران خدمات آنلاین با وب هوک آشنا هستند و از آن استفاده میکنند. اگر شما هم میخواهید بدانید که وب هوک چیست و چطور کار میکند، تا آخر این مقاله همراه ما باشید. در این مقاله، به بررسی دقیق webhook، کاربردهای رایج و مزایا، نحوه ساخت وبهوک و تفاوتهای آن با API میپردازیم.
وب هوک چیست؟
در این بخش، به طور کامل دربارهی اینکه وب هوک چیست و چه کاری انجام میدهد، صحبت میکنیم.
وب هوک یک ابزار کاربردی است که از آن برای راحتترکردن ارتباط سرور به سرور در توسعهی وب و سایر خدمات آنلاین استفاده میشود. اگر بخواهیم خیلی ساده این ابزار را بیان کنیم، میتوانیم اینطور بگوییم که وی هوک یک پیغام خودکار است که از یک برنامه به برنامهی دیگر و در زمان وقوع یک رویداد خاص ارسال میشود.
به عنوان مثال، فرض کنید یک وبلاگ دارید و میخواهید زمانی که پست جدید منتشر میکنید، افرادی که در سایتتان عضو هستند، یک اعلان دریافت کنند. برای این کار، میتوانید با استفاده از یک وب هوک، پیام را از وبلاگتان به ارائهدهندهی خدمات ایمیل، ارسال کنید. با انجام این کار، ارائهدهندهی خدمات ایمیل، یک ایمیل حاوی جزئیات را برای مشترکین وبلاگ شما میفرستد تا به آنها اطلاع دهد که یک پست بر روی وبلاگتان منتشر شده است.
وب هوکها از دو بخش تشکیل شدهاند: راه اندازی (trigger) و عمل (action). از trigger برای فعالشدن webhook استفاده میشود و میتواند یک پست جدید، بهروزرسانی رکورد، اتمام عملیات پرداخت و هر چیز دیگری باشد. عمل نیز همان پیامی است که به اپلیکیشن مقصد ارسال میشود و میتواند ایمیل، پیام متنی، اساماس، بهروزرسانی پایگاه داده و مواردی ازایندست باشد.
چرا باید از وب هوک استفاده کنیم؟
شاید از خودتان میپرسید که دلایل استفاده از WebHook چیست و اصلا چرا باید این ابزار را انتخاب کنیم؟
در اینجا، 3 دلیل اصلی استفاده از این ابزار را برایتان شرح میدهیم:
- خودکارسازی: شما با استفاده از وب هوک میتوانید کارهای وقتگیری مانند ارسال گروهی پیام، نظرسنجی و غیره را به صورت خودکار و بدون مداخلهی دست انجام دهید. به عنوان مثال، اگر بخواهید خودتان نظرسنجی از 1000 نفر را انجام دهید، حتما از کند و پر هزینه بودن آن کلافه خواهید شد؛ مخصوصا اگر دادهها به ندرت تغییر کنند. وب هوکها فقط در زمانی که تغییری وجود دارد، دادهها را ارسال میکنند و بدین صورت، نیازی به نظرسنجی دستی نخواهید داشت.
- عملکرد بهتر: زمانی که برای ارسال پیام از یک اپلیکیشن به اپلیکیشن دیگر صرف میشود را تاخیر میگویند. پهنای باند نیز مقدار دادهای است که در یک زمان معین منتقل میشود. وب هوک مصرف پهنای باند و تاخیر را کاهش میدهد و بدین صورت، عملکرد اپلیکیشن بهبود مییابد. با ساخت وب هوک و به کار گیری آن، دادهها فقط در زمانی که به آنها نیاز است ارسال میشوند و بدین صورت ، تاخیر و پهنای باند کاهش مییابند.
- کاهش هزینهها: کاهش منابع و زیرساختهای موردنیاز از مهمترین کارهایی است که وب هوک انجام میدهد. با استفاده از وب هوک شما به تعداد سرور، پایگاههای داده و APIهای کمتری نیاز دارید و درنتیجه، هزینههایتان بسیار کمتر میشود. علاوه بر این، با استفاده از webhook به تعداد کد کمتری برای نوشتن و اشکالزدایی نیاز خواهیدداشت.
نحوه کار وب هوکها به چه صورت است؟
برای اینکه بتوانید یک وب هوک را ارسال کنید، سیستمتان باید قابلیت پشتیبانی از این فرایند را داشته باشد. برای انجام این کار، میتوانید سیستمتان را با راهاندازی درخواستهای HTTP برای انواع مختلف رویدادها آماده کنید.
وب هوکها معمولا در پلتفرمهای SaaS مانند گیت هاب، شاپیفای، استریپ، تویلیو و اسلک بهکار گرفته میشوند؛ زیرا این پلتفرمها، انواع مختلفی از رویدادها را بر اساس فعالیتهایی که در آنها اتفاق میافتد، پشتیبانی میکنند.
برای اینکه درخواستهای (request) وب هوک را دریافت کنید، باید برای یک یا چند رویداد (event) که با نام موضوع (topics) نیز شناخته میشوند، در پلتفرمی که وب هوک را ارائه میدهد، ثبتنام کنید. درخواست وب هوک به نقطهی پایانی مقصد که URL نام دارد و میتواند اپلیکیشن شما باشد، ارسال میشود. برای آن رویداد، باید URL را به عنوان یک URL وب هوک ثبت کنید.
پس از اینکه ثبت وبهوک برای یک رویداد به پایان رسید، پس از هر باری که یک رویداد رخ بدهد، درخواستهای وبهوک به URL مقصدی که مشخص کردهاید، ارسال میشوند.
از طرف دیگر، وقتی برای درخواستهای وب هوک ثبت نام کردهاید، باید برای دریافت آنها نیز آماده باشید. همانطور که قبلا گفتیم، وبهوکها درخواستهای HTTP معمولی هستند و باید به ترتیب رسیدگی شوند. محمولههای وبهوک به صورت سریالی هستند و در فرمتهای JSON یا XML کدگذاری میشوند.
با اینکه وبهوکها سیستم ارتباطی یکطرفه هستند، بهترین کار این است که یک کد وضعیت 200 یا 302 را برگردانید تا به برنامهی منبع اطلاع دهید که آن را دریافت کردهاید. از آنجایی که برخی از برنامههای کاربردی منبع توانایی ارسال درخواست وب هوک بیش از یکبار را دارند، بهتراست عملیات درخواست وبهوک را در انتهای idempotent خود انجام دهید. در این صورت، مطمئن میشوید که پاسخ شما به یک درخواست وب هوک تکراری نیست و سیستم در معرض خطر قرار نمیگیرد.
از طرف دیگر، هر درخواست وبهوک میتواند به چندین مقصد که به اطلاعات نیاز دارند، ارسال شود. به این فرایند fanning out گفته میشود. با استفاده از این قابلیت، سیستمها میتوانند با اپلیکیشنهای بیشتری در ارتباط بوده و اطلاعات را در سراسر وب توزیع کنند.
مثالهایی از وب هوک
بسیاری از اپلیکیشنهای تحت وب از وب هوک برای دریافت دادهها از اپلیکیشنهای دیگر استفاده میکنند. علاوهبراین، میتوان از این ابزار برای راهاندازی یک گردش کار خودکار در محیطهای GitOps نیز استفاده کرد. در این قسمت، میخواهیم چند مثال از عملکرد وب هوک در دنیای واقعی را معرفی کنیم:
گیت هاب
گیت هاب یک بستر محبوب و بسیار شناخته شده برای میزبانی و همکاری پروژههای نرم افزاری است. این ابزار با ارائهی یک API به شما امکان پرسوجوی مشکلات و دریافت درخواستها را میدهد. همچنین، شما میتوانید ساخت وب هوک در گیت هاب را به راحتی انجام دهید.
توسعهدهندگان با ورود به گیت هاب، میتوانند یک وبهوک برای اطلاع رسانی از یک مشکل بسازند که میگوید “When an issue is updated, let me know at this internal url”. در ادامه، گیت هاب این کار را به صورت خودکار انجام میدهد و نیاز به واکشی اطلاعات توسط ابزارهای دیگر از بین میرود.
استریپ
استریپ (Stripe) بستری است که از آن برای پردازش پرداختهای آنلاین استفاده میشود. این ابزار به شما امکان میدهد که اعلانهایی که در مورد حساب استریپتان رخ میدهد را دریافت کنید. این اعلانها میتوانند پرداخت موفقیتآمیز، بازپرداختها و غیره باشند. شما میتوانید از وب هوک برای بروزرسانی پایگاه داده، ارسال رسید و یا راهاندازی سایر اقداماتی که بر اساس رویدادهای پرداخت هستند، استفاده کنید.
یونیتو
یونیتو (Unito) پلتفرمی است که کار همگامسازی و ادغام ابزارهای مختلف مدیریت پروژه مانند ترلو، جیرا، گیت هاب و غیره را برعهده دارد. این پلتفرم از وب هوک برای همگام نگهداشتن دادهها در میان ابزارها استفاده میکند تا بتوانید با استفاده از این ابزارها، با اعضای تیم و سایر افراد همکاری بهتری داشتهباشید. شما با استفاده از وبهوک میتوانید یک گردش کاری ایجاد کنید. مثلا در زمانی که یک کارت در ترلو به لیست خاصی منتقل شود، به طور خودکار یک مسئله در گیت هاب تعریف میشود؛ و یا پس از ادغام یک درخواست pull در گیت هاب، در جیرا یک بروزرسانی وضعیت ایجاد شود.
تفاوت وب هوک و API
از وب هوکها و APIها برای برقراری ارتباط بین اپلیکیشنهای کاربردی مختلف در کارهای مربوط به توسعهی وب استفاده میشود. با این حال، این دو ابزار اهداف متفاوتی را دنبال میکنند و روشهای متفاوتی را برای انجام کارهایشان در پیش میگیرند.
در این قسمت، برخی از مهمترین تفاوتهای وبهوک و API را به صورت مختصر بیان میکنیم:
- روش کار: وبهوکها دادهها را به صورت خودکار و بر اساس رویدادها در فرایندی به نام “push” ارسال میکنند. APIها بر اساس درخواستهای صریح در یک فرایند، دادهها را عملیات “push” یا “pull” مبادله میکنند.
- راه اندازی یا trigger: وبهوک یک ابزار رویداد-محور است و APIها مبتنی بر درخواست هستند.
- موارد استفاده: معمولا از وبهوکها برای ارسال اعلانهای بلادرنگ استفاده میشود. این در حالی است که APIها طیف وسیعی از عملیات مانند بروزرسانی، بازیابی دادهها و غیره را انجام میدهند.
- پیکربندی: برای رویدادها و نقاط پایانی یا End-point وبهوکها به پیکربندی نیاز است. APIها نقاط پایانی قابل فراخوانی را بدون پیکربندی مبتنی بر رویداد، آماده میکنند.
- فرکانس: وبهوکها به صورت بلادرنگ کار میکنند و APIها بر اساس فراوانی درخواستها عمل میکنند.
- امنیت: از آنجایی که در وبهوکها، دادها در نقاط پایانی در معرض دید قرار دارند، به برخی اقدامات امنیتی نیاز است. در APIها معمولا برای دسترسی به دادهها به احراز هویت نیاز دارید.
با اینکه هم وبهوکها و هم APIها ارتباط بین اپلیکیشنها را راحتتر میکنند، وبهوکها به دلیل رویداد-محور بودن و قابلیت خودکارسازی، و APIها به دلیل مبتنی بر درخواست بودن و ارائهی دادهها در پاسخ به درخواستهای مشخصی، هر کدام برای طیف خاصی از عملیات به کار گرفته میشوند.
اینکه از کدام یک برای چه کاری باید استفاده شود، به مورد استفادهی آن بستگی دارد.
مزایای استفاده از وب هوک
وب هوکها مانند تونلهای جادوییای هستند که اپلیکیشنها و سیستمها را به یکدیگر متصل کرده و یک فضای یکپارچه و هماهنگ را برای تبادل دادهها فراهم میسازند. این ابزار برای دنیای آشفتهی وب یک راهحل حیاتی است.
بیایید کمی با رایجترین مزایای وبهوک آشنا شویم:
- بروزرسانیهای بیدرنگ: با استفاده از وبهوکها، دیگر نیازی به بروزرسانی دستی دادهها ندارید و میتوانید جدیدترین اعلانها را در کسری از ثانیه دریافت کنید. این بروزرسانیها میتوانند یک سفارش جدید در وبسایت تجارت الکترونیک باشد و یا یک اعلان از رسانهی اجتماعی محبوبتان. در هر صورت، وبهوکها این کار را هم برای توسعهدهندگان نرمافزار و هم برای کاربران راحتتر کردهاند.
- خودکارسازی: شما با استفاده از وبهوکها میتوانید فقط با چند کلیک، مجموعهای از رویدادها را فعال کنید. به عنوان مثال، ایجاد یک ایمیل شخصی برای مشترکان جدید، بروزرسانی سیستم نرم افزار CRM در زمان خرید مشتری و غیره، از سری کارهای رایجی است که وبهوکها انجام میدهند.
- یکپارچهسازی: با استفاده از وبهوک، سیستمهای مختلف میتوانند اطلاعات را به صورت یکپارچه مبادله کرده و یک روتین هماهنگ را در پیش گیرند. به عنوان مثال، همگامسازی دادهها بین اپلیکیشنهای مختلف یا پرکردن شکاف اطلاعاتی بین سرویسها از کارهایی است که وبهوکها انجام میدهند.
- انعطافپذیری: وب هوکها در فرمت و نوع قالبی که ارسال میکنند هیچ محدودیتی ندارند. شما میتوانید پکیجهای سادهی JSON تا اسناد پیچیدهی XML را به راحتی ارسال کنید. با استفاده از این ویژگی، توسعهدهندگان میتوانند سفارشیسازیها را با راحتی بیشتری انجام دهند.
- امنیت: وب هوکها هیچ فشار غیرضروریای به سیستم شما وارد نمیکنند. زمانی که یک نقطهی پایانی که در دادهها در آن تحویل داده میشوند را مشخص میکنید، کنترل جریان به دست وبهوک میافتد و کارها به روش خودکار و در کمترین زمان ممکن انجام میشوند.
ساخت وب هوک
فرآیند ایجاد یک وب هوک به پلتفرم یا سرویس خاصی که استفاده میکنید بستگی دارد. با این حال، مراحل کلی معمولاً مشابه هم هستند:
- سرویس یا پلتفرمی را که وب هوک را ارائه میدهد، شناسایی کنید. این پلتفرم میتواند گیت هاب، اسلک ، یک پلتفرم ابری یا هر سرویس دیگری باشد که از webhookها پشتیبانی میکند.
- صفحه مرتبط با پیکربندی webhook یا end-point را پیدا کنید. این معمولاً در بخش Settings یا مدیریت سرویس هر پلتفرم یافت میشود.
- یک URL منحصر به فرد برای نقطه پایانی وب هوک خود ارائه دهید. این نقطه پایانی آدرسی است که سرویس، اعلانها یا دادهها را در آن ارسال میکند. این باید یک URL عمومی باشد که برنامه شما بتواند از آن درخواستها را دریافت کند.
- رویدادها یا اعلانهایی را که میخواهید دریافت کنید انتخاب کنید. سرویسهای مختلف رویدادها یا اعلانهای مختلفی را ارائه میدهند که میتوانند وب هوکها را راه اندازی کنند. مواردی را انتخاب کنید که با دادهها یا اقداماتی که میخواهید بهروزرسانیهای مربوط به آنها را دریافت کنید، همسو هستند.
- هر گونه احراز هویت یا تنظیمات امنیتی مورد نیاز خود را پیکربندی کنید. برخی از سرویسها ممکن است به فرایندهای احراز هویت یا سایر اقدامات امنیتی برای تأیید فرستنده اعلانهای وب هوک نیاز داشته باشند.
- وب هوک را فعال کنید. پس از تکمیل پیکربندی، وب هوک را برای شروع دریافت اعلان ها فعال کنید.
در اینجا جزئیات بیشتری از مراحل ایجاد یک وب هوک در گیت هاب را آوردهایم تا با جزئیات بیشتری با این فرایند آشنا شوید:
- به حساب گیت هاب خود وارد شوید و به یک ریپازیتوری که میخواهید وب هوک را در آن ایجاد کنید بروید.
- روی تب “Settings” کلیک کنید و “Webhooks” را انتخاب کنید.
- روی دکمه “Add webhook” کلیک کنید.
- در قسمت «URL Payload»، نشانی اینترنتی نقطه پایانی وب هوک خود را وارد کنید. این نقطه، نشانی اینترنتی است که گیت هاب در آن اعلانهایی درباره رویدادهای ریپازیتوری شما ارسال میکند.
- در قسمت «Content type»، گزینه «application/json» را انتخاب کنید. این قالب استاندارد برای playloadهای وب هوک است.
- در قسمت “Secret”، نیاز است تا یک کلید مخفی وارد کنید که برای تایید اعتبار اعلانهای وب هوک گیت هاب استفاده میشود. این بخش اختیاری است اما برای امنیت بیشتر توصیه میشود.
- در بخش «Which events would you like to trigger this webhook» رویدادهایی را که میخواهید برای آنها اعلان دریافت کنید انتخاب کنید. برای مثال، میتوانید «Push»، «Pull request» یا «Issue» را انتخاب کنید.
- برای ذخیره تنظیمات خود، روی دکمه “Add webhook” کلیک کنید.
وبهوک شما اکنون فعال شده است و همانطور که مشخص شده است شروع به دریافت اعلانها از گیت هاب میکند. می توانید با ایجاد تغییر در ریپازیتوری خود و تأیید اینکه اعلان به درستی در نقطه پایانی وب هوک شما دریافت شده است، وب هوک را آزمایش کنید.
کاربردهای رایج وب هوکها
وب هوکها در طیف وسیعی از برنامهها، صنایع و موارد مختلف استفاده میشوند. برخی از کاربردهای رایج وبهوکها عبارتند از:
- تجارت الکترونیک: در تجارت الکترونیک از وبهوکها برای اطلاعرسانی به سیستمهای پردازش سفارش، ارسال اعلان به مشتریان دربارهی تغییرات، راهاندازی بروزرسانیهای انتقال ارز و غیره استفاده میشود.
- سیستم مدیریت ارتباط با مشتری (CRM): در CRM میتوان از وب هوکها برای بروزرسانی سیستم، تیکتهای مشتری و غیره استفاده کرد.
- CI/CD: وب هوکها در زمانی که تغییرات کد به ریپازیتوری منتقل میشود، به طور خودکار عملیاتی مانند ساخت، آزمایش و خطوط انتقال را راهاندازی میکنند.
- نظارت بر رسانههای اجتماعی: میتوان از وبهوکها برای ردیابی منشنها، نظرات و تعاملاتی که در پلتفرمهای رسانههای اجتماعی ردوبدل میشوند، استفاده کرد.
- پردازش عملیات پرداخت: کاربران میتوانند با استفاده از وب هوکها به اطلاعات تراکنشهای موفق، پرداختهای ناموفق یا بازپرداختها دسترسی داشته و از این اطلاعات برای انجام خودکارسازی سفارش و ارتباط با مشتریانشان استفاده کنند.
جمعبندی
وب هوک یک ابزار رایج و قدرتمند است که در حوزهی توسعهی وب و خدمات آنلاین به وفور استفاده میشود. این ابزار شما را قادر میساز تا با سایر برنامهها یک ارتباطی سریع، کارآمد و مقرونبهصرفه داشته باشید.
همچنین، شما با استفاده از وبهوکها میتوانید بسیاری از کارهای وقتگیر و دستی را خودکارسازی کرده و هزینههای کسبوکارتان را کمتر کنید. راهاندازی و استفاده از وب هوک بسیار آسان است؛ آن هم به شرطی که از یک اپلیکیشن که از این ابزار پشتیبانی میکند، استفاده کنید.
برنامهها و اپلیکیشنهای بسیار زیادی در سراسر جهان وجود دارند که از این ابزار استفاده میکنند تا ارتباط بین اپلیکیشنی خود را بهبود بخشند.