پادیوم بلاگ
تصویر لوگوی Webhook در کنار عبارت API برای مقاله Webhook چیست؟

Webhook چیست؟ و چه تفاوتی با API دارد؟

رضا دهقان
تکنولوژی ، مقالات

دنیای امروزی به طور فزاینده‌ای در هم‌تنیده و به‌هم پیوسته است. Webhook‌ها و APIها توانسته‌اند با ایجاد امکان تعامل بین سیستم‌ها، فصل تازه‌ای در توسعه اپلیکیشن‌ها رقم بزنند. اما Webhook چیست؟ تفاوت آن با API چیست؟ چه زمانی باید از Webhook استفاده کنیم و چه زمانی از API؟

API چیست؟

API با باز کردن یک در، تعامل بین سیستم‌ها را بر اساس سیستم درخواست-پاسخ برقرار می‌کند. در این مدل کلاینت یک درخواست را ارسال کرده و سرور پاسخ متناسب با درخواست را باز می‌گرداند.

Webhook چیست؟

Webhook نوعی API رویداد-محور است. بر خلاف مدل سنتی درخواست-پاسخ، Webhook داده را در پاسخ به یک وقوع یک رویداد (کلیک موس، رسیدن به ساعتی خاص در روز، پر شدن فرم توسط کاربر و…) ارسال می‌کند. از آن‌جایی که اپلیکیشن ارسال‌کننده داده تعامل را آغاز می‌کند، به Webhook‌ها APIهای برعکس نیز می‌گویند.

کی از Webhook استفاده کنیم؟

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

از آن‌جایی که Webhook طوری ساخته می‌شوند که به اطلاعات محدودی دسترسی داشته باشند، کاربرد محدودی نیز دارند. یکی از اصلی‌ترین کاربردهای Webhook زمانی است که کاربر می‌خواهد یک عملیات را بدون نیاز به باز کردن اپلیکیشن انجام دهد. برای مثال سناریوهای زیر جای مناسبی برای استفاده از Webhook‌ها هستند:

  • به‌روزرسانی وضعیت یک سیستم CRM پس از لغو اشتراک توسط مشتری
  • ارسال نوتیفیکیشن یاد‌آوری قرار ملاقات آنلاین در فواصل تعیین‌شده (برای مثال نیم‌ساعت قبل از شروع جلسه)
  • ارسال ایمیل خودکار زمانی که کاربر قصد دارد رمز عبور خود را تغییر دهد
  • ارسال نوتیفیکیشن به کاربر در خصوص تغییر قیمت سهام یا رمزارز

مثال‌هایی از کاربرد Webhook در دنیای واقعی

پست

شرکت پست با استفاده از Webhook URLهایی تولید می‌کند که کاربر می‌تواند با رجوع به آن وضعیت بسته پستی را بررسی کرده و با ورود به هر مرحله (تحویل به پستچی، ارسال به مقصد و…) یک نوتیفیکیشن دریافت کند.

Zapier

ابزار Zapier به کاربران اجازه می‌دهد تا با استفاده از Webhook‌ها فرایندهای مختلف بین سرویس‌های گوناگون را اتوماسیون و یکپارچه کنند.

Mailchimp

ابزار Mailchimp به کاربران اجازه می‌دهد تا با استفاده از Webhook داده‌های دریافتی از طریق ایمیل را به یک اپلیکیشن دیگر ارسال کنند. برای مثال شما می‌توانید با کمک Webhook زمانی که کاربر روی یک لینک کلیک می‌کند، اطلاعات کاربر را به CRM ارسال کرده و داخل سگمنت مشخص قرار دهد.

کی از API استفاده کنیم؟

APIها تعامل بین اپلیکیشن‌ها را در فرمت خوانا برای ماشین‌ها (به طور معمول JSON یا XML) ایجاد و حفظ می‌کنند. به همین دلیل API برای زمانی که داده به طور مداوم در حال اضافه شدن یا به‌روزرسانی است، گزینه مناسبی به شمار می‌رود. برای مثال اپلیکیشن‌هوای آب‌و‌هوا همواره در حال به‌روزرسانی داده‌های خود هستند و از این‌رو استفاده از API برای تبادل این داده‌ها بهتر است.

ماهیت تعاملی APIها به آن‌ها اجازه می‌دهد تا وظایفی که Webhook‌ها قادر به انجام آن‌ها را نیستند را به راحتی انجام دهند. مثال‌های زیر سناریوهایی هستند که می‌توانند از API بهره ببرند:

  • رهگیری زنده پیک در اپلیکیشن غذا
  • دریافت داده‌های ترافیکی دز اپلیکیشن‌های نقشه‌-محور
  • استفاده از سیستم‌های احراز هویت دومرحله‌ای و چندمرحله‌ای ثالث در اپلیکیشن

مثال‌هایی از کاربرد API در دنیای واقعی

اپلیکیشن‌های پرداختی

اپلیکیشن‌های پرداختی با کمک APIها تراکنش‌های گوناگون (انتقال وجه، پرداخت قبض و…) را در هر روز پردازش می‌کنند. این اپلیکیشن‌ها به طور مداوم با سیستم بانک‌ها در ارتباط بوده و داده‌های مختلفی را تبادل می‌کنند، از این‌رو طبیعی است که APIها گزینه مناسبی برای استفاده در این اپلیکیشن‌ها است.

اپلیکیشن‌های تاکسی‌های آنلاین

اپلیکیشن‌های تاکسی آنلاین نظیر اسنپ و تپسی به دلیل تبادل مداوم اطلاعات بین پایگاه داده، کاربران و اپلیکیشن (مکان راننده، تعیین هزینه و…) باید از APIها برای تعامل و تبادل داده استفاده کنند.

اپلیکیشن‌های استریم موزیک

اپلیکیشن‌های استریم موزیک (یا فیلم) از APIها برای کاربری‌های گوناگون مانند دریافت اطلاعات موزیک یا فیلم، ارائه پیشنهاد به کاربران و بارگذاری لیست پخش استفاده می‌کنند. 

Webhook در برابر API یا در کنار آن؟

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

اگر شما قصد دارید به کاربر نوتیفیکیشن ارسال کرده یا داده‌ها را در صورت بروز یک رویداد به‌روزرسانی کنید، Webhook بهترین گزینه شماست. اما اگر قصد دارید جریان داده بین اپلیکیشن و سیستم را به طور مداوم حفظ کرده و داده‌ها را تبادل کنید، باید از API استفاده بهره ببرید.