API چیست؟
از لحاظ فنی API مخفف (Application Programming Interface) رابط برنامه نویسی اپلیکیشن است. در برخی موارد، اکثر شرکتهای بزرگ، APIهایی برای مشتریان و یا استفاده داخلی خود ساختهاند.اما چگونه ای پی آی را به زبان فارسی ساده توضیح دهیم؟ و آیا معنای آن وسیعتر از چیزی است که در برنامه نویسی و تجارت استفاده میشود؟ در این مقاله می خواهیم به سوالات پاسخ بدهیم.
API چیست؟
قبل از اینکه برنامه نویسی یاد بگیرم، API به نظر ساده بود.
امروزه این اصطلاح را اغلب استفاده میکنم، در واقع اخیراً سعی کردم یک API را در یک بار سفارش دهم. پاسخ متصدی بار، 404 بود: منبع یافت نشد.
من بسیاری از افراد را ملاقات میکنم، هم در حوزه فناوری و هم در جاهای دیگر، که گاهی ایدهای مبهم و یا نادرست در مورد این اصطلاح نسبتاً رایج دارند.
از لحاظ فنی، API مخفف رابط برنامه نویسی اپلیکیشن است. در برخی موارد، اکثر شرکتهای بزرگ، APIهایی برای مشتریان و یا استفاده داخلی خود ساختهاند.
اما چگونه API را به زبان فارسی ساده توضیح دهیم؟ و آیا معنای آن وسیعتر از چیزی است که در برنامه نویسی و تجارت استفاده میشود؟ اول، بیایید عقب برویم و ببینیم که خود وب چگونه کار میکند.
WWW و سرورهای راه دور
وقتی در مورد وب فکر میکنم، یک شبکه بزرگ از سرورهای متصل به هم را تصور میکنم.
هر صفحهای در اینترنت در جایی از سرور راه دور ذخیره میشود. در کل، یک سرور راه دور خیلی عجیب نیست و تنها بخشی از یک کامپیوتر قرار گرفته در فاصلهای دور است که به منظور پردازش درخواستها، بهینهسازی شده است.
برای درک بهتر قضیه، شما میتوانید یک سرور را روی لپتاپتان راه اندازی کنید و صفحات یک وبسایت اینترنتی را روی آن قرار دهید (در واقع، یک سرور محلی چیزی است که برنامهنویسان برای توسعهی وبسایتها پیش از انتشار عمومی، از آن استفاده میکنند).
وقتی شما آدرس سایتی را در مرورگر خود تایپ میکنید، یک درخواست به سمت سرورهای آن سایت فرستاده میشود. به محض اینکه مرورگر پاسخ را دریافت میکند، کد را تفسیر کرده و صفحه را نمایش میدهد.
برای مرورگر (که به عنوان client هم شناخته میشود)، سرور فیس بوک یک API است. به این معنی که هر بار شما از یک صفحه وب بازدید میکنید، شما با چندین API سرور راه دور ارتباط برقرار میکنید.
یک API همانند سرور راه دور نیست؛ بلکه بخشی از سرور است که درخواستها را دریافت و پاسخها را ارسال میکند.
API راهی برای سرویسدهی به مشتریان شماست
احتمالا راجع به شرکتهایی که پکیجهای ای پی آی را به عنوان محصول میفروشند، شنیدهاید. به عنوان مثال Weather Underground دسترسی به API دادههای آبوهوایی خود را به فروش میرساند.
یک نمونه سناریو: شما یک وبسایت برای کسب و کارتان دارید و در این وبسایت فرمی برای تعیین زمان ملاقات مشتریان قرار دادهاید. میخواهید این امکان را به مشتریان دهید که خودشان به صورت مستقیم یک رویداد را با جزئیات در Google Calendar برای ملاقات ایجاد کند.
استفاده از ای پی آی: ایده این است که سرور وبسایت به طور مستقیم با سرور گوگل ارتباط برقرار میکند و درخواست خود را با تمام جزئیات برای ایجاد رویداد به سرور میدهد. سپس سرور شما پاسخ گوگل را دریافت میکند، آن را پردازش میکند و اطلاعات مربوطه را به مرورگر ارسال میکند که میتواند یک پیام تأییدی برای کاربر باشد.
به عنوان روش جایگزین، حتی مرورگر شما میتواند یک درخواست ای پی آی را به صورت مستقیم به سرور گوگل بفرستد و سرور شما را دور بزند.
ای پی آی سرویس Google Calendar چه تفاوتی با ای پی آی بقیه سرورها فرق دارد ؟
از نظر فنی، تفاوت در فرمت درخواست و پاسخ است.
برای رندر کردن تمام صفحه وب، مرورگر شما انتظار پاسخ HTML را دارد، که حاوی کد نمایشی است، در حالی که APIسرویس Google Calendar فقط اطلاعات را برمیگرداند (احتمالا در قالب هایی مانند JSON)
اگر سرور وبسایت شما درخواست API را ایجاد کند، سرویس دهنده وبسایت شما مانند کلاینت عمل میکند (مانند زمانی که، مرورگر سایتی را میخواهد باز کند و تبدیل به کلاینت میشود)
از نظر کاربران، API به آنها اجازه انجام کارهایشان را بدون خارج شدن از وبسایت میدهد.
اکثر وبسایتهای مدرن، حداقل از چند API کمکی استفاده میکنند. اکثر مشکلات سایت را میتوان با کمک یکی از این سرویسهای کمکی دیگر با قرار دادن آن در قالب یک کتابخانه یا سرویسها برطرف کرد. اغلب فقط استفاده از این راه حل موجود سادهتر و قابل اعتمادتر است.
اینکه تیمهای برنامه نویسی، برنامههای خود را از طریق API بین چندین سرور مختلف تقسیم کنند و با هم ارتباط برقرار کنند؛ دیگر روش نامرسومی نیست و سرورهایی که عملکردهای کمکی را برای سرور اصلی نرم افزار انجام میدهند، معمولا به عنوان “میکرو سرویس” معرفی میشوند.
به طور خلاصه، هنگامی که یک شرکت به مشتریان خود یک API ارائه میدهد، به این معنی است که آنها مجموعهای از آدرسهای اختصاصی ساختهاند که پاسخهای دادههای خالص را برمیگردانند؛ یعنی پاسخها هیچ نوع کد نمایشی را که از رابط گرافیکی مانند وبسایت انتظار دارید، بر نمی گردانند.