webhook چیست؟ هر چیزی که باید درباره وب هوک بدانید
سوال اصلی ما در این مقاله این است که webhook چیست؟ در دنیای آنلاین امروزی که تمام عناصر به یکدیگر متصل هستند، هیچ عاملی نمیتواند به تنهایی عملکرد خوبی داشته باشد. رسیدگی به امور مختلف، معمولا نیازمند همکاری بین انواع سرویسهاست؛ به عبارت دیگر، نرمافزارهای فروشگاهی باید با سیستمهای پرداخت، سیستمهای پرداخت با سیستمهای بانکی و سیستمهای بانکی با حسابهای مشتریان ارتباط برقرار کنند.
توانایی سیستمهای آنلاین برای برقراری ارتباط با یکدیگر و به اشتراکگذاری اطلاعات، یکی از مهمترین عناصری است که ارائه دهندگان خدمات آنلاین باید به آن دقت کنند. یکی از روشهای موجود برای تسهیل ارتباط بین سرویسهای آنلاین، استفاده از وبهوک یا web hook است. در پایان این متن، با استفاده از توضیحات داده شده، با مفهوم وبهوک، نحوه عملکرد آن و زمان مناسب برای استفاده از آن آشنا خواهید شد.
فهرست مطالب
وب هوک چیست؟
وب هوک یک درخواست HTTP است که به طور خودکار از سیستم مبدا به سیستم مقصد ارسال میشود. این درخواست اغلب دارای حجمی از دادهها است و توسط رویدادی در سیستم مبدا ایجاد میشود. وب هوکها به صورت خودکار عمل میکنند، به این معنی که در هنگام وقوع رویداد، به صورت اتوماتیک ارسال میشوند. وب هوک یا Webhook فرمتی است که به سیستم مبدا امکان ارتباط با سیستم مقصد را در هنگام وقوع رویداد فراهم میکند و اطلاعات مربوط به رویداد انجام شده را به اشتراک میگذارد.
کاربرد webhook چیست؟
درک کاربرد وب هوک را با یک مثال بیان میکنیم. فرض کنید شما یک مشتری هستید که از یک سرویس استریم استفاده میکنید. هر ماه، کارت اعتباری شما برای پرداخت اشتراک شارژ میشود و بانک شما باید این اطلاعات را به شما اعلام کند. در اینجا، سیستم بانکی میتواند از یک وب هوک یا Webhook استفاده کند تا هر بار که کارت شما شارژ میشود، یک پیام به سیستم ایمیل یا پیامکی شما ارسال کند. این پیام شامل اطلاعات مربوط به شارژ بوده که سرویس ایمیل یا پیامک از آن برای ایجاد یک پیام مناسب برای ارسال به شما استفاده میکند.
نگاهی دقیقتر به web hook
یک وبهوک این امکان را برای خدمات شخص ثالث فراهم میکند تا بهروزرسانیهای لازم را به اپلیکیشن مشتری ارسال کند. این بهروزرسانیها، به وسیله برخی رویدادها یا فعالیتها توسط ارائهدهنده وبهوک برانگیخته و از طریق درخواستهای HTTP به اپلیکیشن مشتری ارسال میشوند. وقتی درخواست دریافت شد، اپلیکیشن مشتری با منطق مختص خود آن درخواست را مدیریت میکند. به عنوان مثال، یک ایمیل ارسال میکند یا دادهها را در پایگاهداده خود ذخیره میکند.
تفاوت API با webhook چیست؟
استفاده از API و وب هوک در برنامههای کاربردی بسیار مشابه است، اما مهمترین تفاوت بین آنها در نحوه انتقال دادهها است. API اطلاعات را از ارائه دهنده خدمات به صورت واکشی (Pull) دریافت میکند، در حالی که وب هوک این امکان را فراهم میکند که ارائه دهنده خدمات اطلاعات را به صورت ارسال (Push) برای سرویس گیرنده ارسال کند.
گرچه از هر دو، یعنی API و وب هوک برای ارتباط و انتقال دادهها استفاده میشود، اما هر کدام ویژگیها و کاربردهای خود را دارند. به عنوان مثال، معمولاً سرویسها از هر دو این روشها برای انتقال دادهها به داخل اپلیکیشنها استفاده میکنند. در نهایت، API و وب هوک ابزارهای مهمی برای ارتباط برنامهها با یکدیگر هستند و هر یک ویژگیها و قابلیتهای منحصر به فرد خود را دارند.
فرآیند درخواست وب هوک
بعد از بررسی اینکه webhook چیست و چه کاربردی دارد، حال نوبت به شرح فرآیند درخواست وب هوک و نحوه کار این سیستم است. برای ارسال وبهوکها، سیستم شما باید قادر باشد تا از این فرآیند پشتیبانی کند. از طریق درخواستهای HTTP، میتوانید سیستم خود را برای ارسال انواع رویدادهای وب هوک آمادهسازی کنید. وبهوکها به خصوص برای پلتفرمهایی مانند GitHub، Shopify، Stripe، Twilio و Slack مورد استفاده قرار میگیرند. این پلتفرمها انواع مختلفی از رویدادها را بر اساس فعالیتهایشان پشتیبانی میکنند.
برای دریافت درخواستهای وبهوک، باید برای یک یا چند رویدادی (موضوع) که پلتفرم ارائه میدهد، ثبت نام کنید. درخواستهای وب هوک به یک URL خاص ارسال میشوند که باید آن را به عنوان Webhook URL برای امور مربوطه ثبت کنید. پس از تکمیل ثبت وبهوک برای یک رویداد با اضافه کردن URL، هر بار که آن رویداد اتفاق میافتد، درخواستهای وبهوک در URL مشخص شده، ارسال خواهند شد.
روند پردازش انواع وب هوک
وب هوکها درخواستهای HTTP ویژهای هستند که برای ارتباط یک طرفه استفاده میشوند. برای دریافت این درخواستها، باید آماده باشید و آنها را به صورت معمولی پردازش کنید. ارائهدهنده وب هوک همواره راهنمایی و اطلاعات لازم را در مورد نحوه پیادهسازی و دریافت درخواست برای شما فراهم میکند.
فایلهای وب هوک به صورت JSON یا XML کدگذاری میشوند و برای دسترسی به آنها، باید به روش دقیق ارائهشده توسط ارائهدهنده وب هوک عمل کنید. بهتر است که بعد از دریافت درخواست، یک کد وضعیت مناسب مانند 200 یا 302 به نرمافزار مبدا برگردانید تا اعلام کنید که درخواست به درستی انجام شده است.
واقعیت این است که برخی از نرمافزارهای مبدا ممکن است درخواست وب هوک را بیش از یک بار ارسال کنند. بنابراین، بهتر است که در انتهای عملیات، وب هوک را غیرفعال کنید تا از این موضوع پیشگیری کنید و سیستم خود را محافظت کنید.
POST یا GET در webhook چیست؟
در ابتدا این نکته را بدانید که این امر بستگی به این دارد که سیستم ارائهدهنده webhook چیست؟ ممکن است درخواستها به صورت GET یا POST دریافت شوند. درخواستهای GET وب هوک به صورت یک رشته جستجو به آدرس وب هوک اضافه میشوند، در حالی که درخواستهای POST حاوی اطلاعات اضافی و توکنهای احراز هویت ممکن است درخواست ارسالی باشند. به طور کلی، درخواستهای وب هوک میتوانند به دو شکل GET و POST دریافت شوند و ممکن است اطلاعات بههمراه آنها ارسال شود.
مقایسه وب هوک و پولینگ
روش Polling یا “پولینگ” زمانی استفاده میشود که نیاز به بررسی دورهای دادهها و یا رخدادها باشد. در این روش، نرم افزار به صورت مکرر API را فراخوانی کرده و اطلاعات جدید یا شروع رخدادها را بررسی میکند.
از سوی دیگر، وب هوکها زمانی رخ میدهند که یک رخداد در لحظه اتفاق میافتد و دادهها به سیستم شما ارسال میشوند. بنابراین، در این روش نیازی به بررسی دورهای نیست و اطلاعات در لحظه ارسال میشوند.
برای درک سادهتر تفاوت بین این دو روش، فکر کنید که پولینگ مانند مراجعه به اداره پست برای بررسی نامههای جدید است. آنجا شما باید به صورت دورهای برای چک کردن نامههای جدید به اداره پست بروید. اما وب هوک، مانند این است که پستچی به خانه شما آمده و نامه جدید را به شما تحویل داده است.
نهایتاً باید توجه داشت که Polling به تعداد درخواستهای شبکه بیشتری نسبت به وب هوک نیاز دارد که سبب مصرف بیشتر منابع میشود. به عبارت دیگر، وب هوک فقط زمانی که دادههای جدید وجود دارد، اطلاعات را ارسال میکند و در مقابل نیاز به بررسی دورهای نیست.
چه زمانی نیاز است تا از وب هوک استفاده کنید؟
از وب هوکها برای اطلاع لحظهای از رویدادها در سیستم متصل استفاده کنید. این روش ارسال اطلاعات به مقصد موردنظر را در لحظه فراهم میکند و جایگزین ارزانتری برای پولینگ است. به عنوان مثال، یک فروشگاه اینترنتی میتواند از وب هوک استفاده کند تا اطلاعات فاکتور فروش را به شما ارسال کند.
همچنین فروشگاه میتواند از وب هوک برای اطلاع به بازرگانان در صورت اتمام موجودی کالا استفاده کند؛ یا یک درگاه پرداخت میتواند از وب هوک استفاده کند تا تجار را در مورد پرداختهای انجام شده آگاه کند. به این ترتیب، با استفاده از وب هوکها، از آخرین تغییرات و رویدادها در سیستم مطلع شوید و ارسال اطلاعات در این سیستم به صورت لحظهای امکانپذیر باشد.
نمونه سایتهایی که از سیستم وب هوک استفاده میکنند
وبسایتهایی که از وب هوکها برای اطلاع رسانی و اشتراک گذاری اطلاعات استفاده میکنند، شامل:
- استفاده از وب هوکهای Twilio برای انتقال اطلاعات مربوط به رویدادهای مختلف مانند پیامکها، تماسهای صوتی و احراز هویت
- استفاده از وب هوکهای Slack برای ارسال پیامها از طریق نرم افزار Slack
- بکارگیری وب هوکهای Discord برای ارسال پیامها از طریق کانالهای Discord
- استفاده از وب هوکهای Stripe برای اطلاع رسانی به نرم افزار هنگام رویدادهای مرتبط با حساب کاربری
مثال استفاده از وب هوک در سایتهای عضویت
یک وبسایت عضویت خدمات خاصی را فقط به اعضای ثبتنام شده ارائه میدهد. هر بار که یک مشتری از طریق یک درگاه پرداخت مانند آپ، مبلغی را برای استفاده از خدمات سایت پرداخت میکند، صاحب سایت باید اطلاعات پرداخت را به صورت دستی در برنامه مدیریت اعضا وارد و ثبت کند تا مشتری بتواند پس از ثبتنام، وارد سایت شده و از خدمات آن استفاده کند.
با افزایش تعداد اعضا، ثبت اطلاعات پرداخت به صورت دستی بسیار دشوار و حوصلهسربر خواهد بود. بنابراین، استفاده از وبهوک به صورت خودکار این فرآیند را سادهتر و بهینهتر میکند. اگر اپلیکیشن ارائهدهنده خدمات پرداخت و برنامه عضوگیری این امکان را داشته باشند، هر کسی که پرداخت را از طریق ارائهدهنده خدمات پرداخت انجام دهد، به صورت خودکار به عنوان عضو در سایت عضویت اضافه خواهد شد.
با تنظیم انضمام وبهوک بین ارائهدهنده خدمات پرداخت و نرمافزار مدیریت اعضا، امکان ارسال خودکار اطلاعات پرداخت مشتریان در هر رویداد پرداخت وجود خواهد داشت. به این ترتیب، این فرآیند به طور خودکار و بدون نیاز به دخالت دستی انجام میشود.
سخن پایانی
در این مقاله بررسی کردیم که webhook چیست و چه زمانی میتوان از آن استفاده کرد. بطور خلاصه اطلاعات در وب به شدت حاکم هستند و دریافت آنی اطلاعات باعث ایجاد خدمات آنلاین بسیار کارآمد و پاسخگو برای نیازهای مشتری میشود. فناوری Webhook یا وب هوک یک روش ساده برای به اشتراک گذاری فوری اطلاعات بین پلتفرمهای آنلاین است.
یک درخواست وب هوک میتواند بین مقاصد مختلفی که به اطلاعات دسترسی دارند، به صورت همزمان توزیع شود. این قابلیت به سیستمهای منبع اجازه میدهد تا با نرم افزارهای بیشتری ارتباط برقرار کرده و اطلاعات را به سراسر وب منتشر کنند.