سرآغاز

API چیست و چگونه نرم‌افزارها را به هم متصل می‌کند؟

تا به حال به این فکر کردید اطلاعات سایت‌های هواشناسی از کجا بدست می‌آید؟

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

البته که هیچ‌کدام از این نرم‌افزار ها، تمام این داده‌ها را در سرور خودشان ذخیره نکردند. بیشتر خدمات الکترونیک که مدام با آنها سروکار داریم، به نحوی با سیستم‌های دیگه در ارتباط هستند از برنامه‌های بانکی گرفته تا سایت‌های آموزشی و… .
اما هر برنامه (Application) مستقیما به پایگاه داده (DBMS) دیگر سیستم ها وصل می‌شود؟قطعا خیر!

در واقع می‌توان گفت Application Programming Interface یا به اختصار API برای همین چالش خلق شده است؛ پلی که باعث می‌شود نرم‌افزارها با واسطه و قوانین مشخص، با یکدیگر تبادل اطلاعات داشته باشند.

در این مقاله می‌خواهیم بگوئیم API دقیقاً چیست، چرا وجود دارد و چگونه دنیای نرم‌افزار را به هم وصل می‌کند.

مثال مفهومی API: ارتباط نرم‌افزارها با استفاده از API
API مانند پیشخدمت عمل می‌کند و سفارش کاربر را به سرور منتقل می‌کند

API چیست؟

در تصویر بالا، مثال مفهومی ساده و جذاب از آنچه API هست را شرح می دهد.

فرض کنید رستورانی(Application) باشد که در آن می خواهید غذا سفارش دهید.

آیا به عنوان مشتری(User) با فرهنگ، مستقیم وارد آشپرخانه(server,Host,…) شده و عذای انتخابی خود را اعلام می‌کنید؟ نه! (البته در رستوران 3 ستاره به بالا)

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

حال به برنامه تاکسی اینترنتی توجهتان را جلب میکنم، وقتی مقصد خود را وارد می‌کنید برنامه مستقیماً با نقشه، سیستم پرداخت یا راننده تماس نمی‌گیرد.
در عوض، از چند API مختلف استفاده می‌کند:

  • یکی برای نقشه و مسیر
  • یکی برای محاسبه قیمت
  • یکی برای پرداخت
  • یکی برای اطلاع‌رسانی به راننده

و برای هر نوع درخواست (یا به اصطلاح API call)، برنامه یک درخواست به API مربوطه ارسال می‌کند.

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

معماری API

معماری API معمولاً به دو بخش مشتری (Client) و سرور (Server) تقسیم می‌شود:

  • مشتری برنامه‌ای است که درخواست ارسال می‌کند.
  • سرور برنامه‌ای است که پاسخ درخواست را می‌دهد.

مثال: در اپلیکیشن هواشناسی، پایگاه داده هواشناسی سرور است و اپلیکیشن تلفن همراه، مشتری است.

معماری api
معماری api

انواع API بر اساس دامنه استفاده

 APIهای خصوصی (Private API)

  • فقط برای استفاده داخلی شرکت طراحی شده‌اند.
  • برای اتصال سیستم‌ها و داده‌ها در کسب‌وکار کاربرد دارند.

مثال مفهومی API: بخش حسابداری یه شرکت ممکن است برای ارتباط با سیستم منابع انسانی از API داخلی خودش استفاده کند؛ همچنین API داخلی یک بانک برای بررسی تراکنش‌ها، فقط در سرورهای خود بانک قابل استفاده است.

کاربر بیرونی به علت اطلاعات حساس و اختصاصی‌ شرکت/سازمان، به این APIها دسترسی ندارد.

 APIهای عمومی (Public API)

  • برای استفاده همگانی طراحی شده‌اند
  • هر توسعه‌دهنده می‌تواند با ثبت نام یا دریافت API Key از آن‌ها استفاده کند
  • هدف از این نوع، ارائه داده‌ها و امکانات به توسعه‌دهنده‌های بیرونی برای ساخت سرویس‌های جدید

به عنوان مثال : اپلیکیشنی که آب‌و‌هوای مشهد رو نشان میدهد، از Public API سایت OpenWeather استفاده می‌کند.

همچنین APIهای Google Maps، OpenWeather یا Telegram Bot از این نوع هستند.

 APIهای شریک (Partner API)

  • نوعی بین عمومی و خصوصی
  • شرکت‌ها این API را برای همکاران تجاری خاص در دسترس می‌گذارند
  • این APIها معمولاً قرارداد رسمی و سطح دسترسی محدود دارن.

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

APIهای کامپوزیت (Composite API)

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

به عنوان مثال برنامه “رزرو بلیط سفر” را در نظر بگیرید

وقتی کاربر روی دکمه «جستجوی سفر» کلیک می‌کند، اپلیکیشن اطلاعات زیر را همزمان دریافت می‌کند:

  1. پروازهای موجود از API شرکت‌های هواپیمایی
  2. قیمت‌ها از API سیستم پرداخت
  3. پیشنهاد هتل از API رزرو هتل
انواع API بر اساس دامنه استفاده
انواع API بر اساس دامنه استفاده

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

APIها را از کجا پیدا کنیم؟

APIهای جدید را می‌توان در بازارهای API و مستندات (API Directory) پیدا کرد:

  • RapidAPI: بزرگ‌ترین بازار API با بیش از ۱۰,۰۰۰ API عمومی
  • APIForThat و APIList: لیست بیش از ۵۰۰ API وب با مستندات کامل

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

سرانجام

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

در مقالات بعدی، در مورد انواع سبک های API  از دیدگاه طراحی مانند REST API  خواهیم گفت و همچنین در مورد چگونگی ساخت  APIها  و نحوه استفاده آنها در پروژه‌های واقعی صحبت خواهیم کرد.

بیشتر بخوانید :

مستندات API  چیست ؟

انواع API از نظر عملکرد چیستند؟