از لحاظ فنی API (Application Programming Interface) مخفف رابط برنامه نویسی اپلیکیشن است. در برخی موارد، اکثر شرکتهای بزرگ، APIهایی برای مشتریان و یا استفاده داخلی خود ساختهاند.اما چگونه API را به زبان فارسی ساده توضیح دهیم؟ و آیا معنای آن وسیعتر از چیزی است که در برنامه نویسی و تجارت استفاده میشود؟ در این مقاله می خواهیم به سوالات پاسخ بدهیم.
API چیست؟
قبل از اینکه برنامه نویسی یاد بگیرم، API به نظر ساده بود.
امروزه این اصطلاح را اغلب استفاده میکنم، در واقع اخیراً سعی کردم یک API را در یک بار سفارش دهم. پاسخ متصدی بار، 404 بود: منبع یافت نشد.
من بسیاری از افراد را ملاقات میکنم، هم در حوزه فناوری و هم در جاهای دیگر، که گاهی ایدهای مبهم و یا نادرست در مورد این اصطلاح نسبتاً رایج دارند.
از لحاظ فنی، API مخفف رابط برنامه نویسی اپلیکیشن است. در برخی موارد، اکثر شرکتهای بزرگ، APIهایی برای مشتریان و یا استفاده داخلی خود ساختهاند.
اما چگونه API را به زبان فارسی ساده توضیح دهیم؟ و آیا معنای آن وسیعتر از چیزی است که در برنامه نویسی و تجارت استفاده میشود؟ اول، بیایید عقب برویم و ببینیم که خود وب چگونه کار میکند.
WWW و سرورهای راه دور
وقتی در مورد وب فکر میکنم، یک شبکه بزرگ از سرورهای متصل به هم را تصور میکنم.
هر صفحهای در اینترنت در جایی از سرور راه دور ذخیره میشود. در کل، یک سرور راه دور خیلی عجیب نیست و تنها بخشی از یک کامپیوتر قرار گرفته در فاصلهای دور است که به منظور پردازش درخواستها، بهینهسازی شده است.
برای درک بهتر قضیه، شما میتوانید یک سرور را روی لپتاپتان راه اندازی کنید و صفحات یک وبسایت اینترنتی را روی آن قرار دهید (در واقع، یک سرور محلی چیزی است که برنامهنویسان برای توسعهی وبسایتها پیش از انتشار عمومی، از آن استفاده میکنند).
وقتی شما www.facebook.com را در مرورگر خود تایپ میکنید، یک درخواست به سمت سرورهای فیس بوک فرستاده میشود. به محض اینکه مرورگر پاسخ را دریافت میکند، کد را تفسیر کرده و صفحه را نمایش میدهد.
برای مرورگر (که به عنوان client هم شناخته میشود)، سرور فیس بوک یک API است. به این معنی که هر بار شما از یک صفحه وب بازدید میکنید، شما با چندین API سرور راه دور ارتباط برقرار میکنید.
یک API همانند سرور راه دور نیست؛ بلکه بخشی از سرور است که درخواستها را دریافت و پاسخها را ارسال میکند.
API راهی برای سرویسدهی به مشتریان شماست
احتمالا راجع به شرکتهایی که پکیجهای API را به عنوان محصول میفروشند، شنیدهاید. به عنوان مثال Weather Underground دسترسی به API دادههای آبوهوایی خود را به فروش میرساند.
یک نمونه سناریو: شما یک وبسایت برای کسب و کارتان دارید و در این وبسایت فرمی برای تعیین زمان ملاقات مشتریان قرار دادهاید. میخواهید این امکان را به مشتریان دهید که خودشان به صورت مستقیم یک رویداد را با جزئیات در Google Calendar برای ملاقات ایجاد کند.
استفاده از API : ایده این است که سرور وبسایت به طور مستقیم با سرور گوگل ارتباط برقرار میکند و درخواست خود را با تمام جزئیات برای ایجاد رویداد به سرور میدهد. سپس سرور شما پاسخ گوگل را دریافت میکند، آن را پردازش میکند و اطلاعات مربوطه را به مرورگر ارسال میکند که میتواند یک پیام تأییدی برای کاربر باشد.
به عنوان روش جایگزین، حتی مرورگر شما میتواند یک درخواست API را به صورت مستقیم به سرور گوگل بفرستد و سرور شما را دور بزند.
API سرویس Google Calendar چه تفاوتی با API بقیه سرورها فرق دارد ؟
از نظر فنی، تفاوت در فرمت درخواست و پاسخ است.
برای رندر کردن تمام صفحه وب، مرورگر شما انتظار پاسخ HTML را دارد، که حاوی کد نمایشی است، در حالی که APIسرویس Google Calendar فقط اطلاعات را برمیگرداند (احتمالا در قالب هایی مانند JSON)
اگر سرور وبسایت شما درخواست API را ایجاد کند، سرویس دهنده وبسایت شما مانند کلاینت عمل میکند (مانند زمانی که، مرورگر سایتی را میخواهد باز کند و تبدیل به کلاینت میشود)
از نظر کاربران، API به آنها اجازه انجام کارهایشان را بدون خارج شدن از وبسایت میدهد.
اکثر وبسایتهای مدرن، حداقل از چند API کمکی استفاده میکنند. اکثر مشکلات سایت را میتوان با کمک یکی از این سرویسهای کمکی دیگر با قرار دادن آن در قالب یک کتابخانه یا سرویسها برطرف کرد. اغلب فقط استفاده از این راه حل موجود سادهتر و قابل اعتمادتر است.
اینکه تیمهای برنامه نویسی، برنامههای خود را از طریق API بین چندین سرور مختلف تقسیم کنند و با هم ارتباط برقرار کنند؛ دیگر روش نامرسومی نیست و سرورهایی که عملکردهای کمکی را برای سرور اصلی نرم افزار انجام میدهند، معمولا به عنوان "میکرو سرویس" معرفی میشوند.
به طور خلاصه، هنگامی که یک شرکت به مشتریان خود یک API ارائه میدهد، به این معنی است که آنها مجموعهای از آدرسهای اختصاصی ساختهاند که پاسخهای دادههای خالص را برمیگردانند؛ یعنی پاسخها هیچ نوع کد نمایشی را که از رابط گرافیکی مانند وبسایت انتظار دارید، بر نمی گردانند.
آیا میتوانید این درخواستها را با مرورگر خود انجام دهید؟ بله از آنجا که انتقال واقعی HTTP در متن اتفاق میافتد، مرورگر شما همیشه بهترین کار را برای نمایش پاسخ انجام میدهد.
به عنوان مثال، شما میتوانید به API سایت GitHub به طور مستقیم با مرورگر خود دسترسی داشته باشید حتی بدون نیاز به یک توکن دسترسی. زمانی که شما این مسیر (https://api.github.com/users/petrgazarov) را در مرورگر خود وارد میکنید، یک پاسخ JSON به این شکل دریافت میکنید:
{
"login": "petrgazarov",
"id": 5581195,
"avatar_url": "https://avatars.githubusercontent.com/u/5581195?v=3",
"gravatar_id": "",
"url": "https://api.github.com/users/petrgazarov",
"html_url": "https://github.com/petrgazarov",
"followers_url": "https://api.github.com/users/petrgazarov/followers",
"following_url": "https://api.github.com/users/petrgazarov/following{/other_user}",
"gists_url": "https://api.github.com/users/petrgazarov/gists{/gist_id}",
"starred_url": "https://api.github.com/users/petrgazarov/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/petrgazarov/subscriptions",
"organizations_url": "https://api.github.com/users/petrgazarov/orgs",
"repos_url": "https://api.github.com/users/petrgazarov/repos",
"events_url": "https://api.github.com/users/petrgazarov/events{/privacy}",
"received_events_url": "https://api.github.com/users/petrgazarov/received_events",
"type": "User",
"site_admin": false,
"name": "Petr Gazarov",
"company": "PolicyGenius",
"blog": "http://petrgazarov.com/",
"location": "NYC",
"email": "petrgazarov@gmail.com",
"hireable": null,
"bio": null,
"public_repos": 23,
"public_gists": 0,
"followers": 7,
"following": 14,
"created_at": "2013-10-01T00:33:23Z",
"updated_at": "2016-08-02T05:44:01Z"
}
مرورگر شما به راحتی میتواند یک جواب JSON را نشان دهد. شما میتوانید به راحتی از JSONهای مشابه در کد خود استفاده کنید و از هر کدام از بخشهای این جواب در کد خود استفاده کنید.
A برای "Application"
برای اتمام، بیایید چند مثال از API بزنیم.
" اپلیکیشن" میتواند به بسیاری از موارد اشاره کند. در اینجا برخی از آنها در زمینه API آمده است:
-یک قطعه نرم افزاری با یک تابع مجزا.
-کل سرور، کل برنامه، یا فقط یک قسمت کوچک از یک برنامه
اساسا هر قطعهای از نرم افزار که میتواند به طور جداگانه از محیط آن جدا شود، میتواند یک "A" در API باشد، و احتمالا یک نوع API نیز دارد.
بگذارید بگوییم اگر شما در کد خود از یک کتابخانه استفاده میکنید، پس از واردکردن آن به کد خود،این کتابخانه بخشی از برنامه کلی شما میشود. به عنوان یک قطعه مشخص از نرم افزار، کتابخانه به احتمال زیاد دارای یک APIاست که به شما اجازه میدهد که بین آن و بقیه کد خود ارتباط برقرار کنید.
مثال دیگر: در طراحی شی گرا، کدها در داخل شیهای سازماندهی میشوند. برنامه شما ممکن است صدها شی داشته باشد که با یکدیگر در ارتباط هستند.
هر شی یک API دارد - مجموعهای از متدهای public که آن را برای ارتباط با سایر اشیاء در اپلیکیشن خود استفاده میکنند.
یک شی همچنین ممکن است منطقی درونی داشته باشد که private (خصوصی) است، به این معنی که از دامنه ی خارجی پنهان باشد (نه از API).
طبق توضیحات گفته شده، امیدوارم به یک معنای گستردهتری از API و همچنین استفادههای بیشتری از این واژه رسیده باشید.
نظرات کاربران در رابطه با این دوره