API چیست؟ کاربرد API در برنامه نویسی
API چیست؟ یکی از واژههای پر کاربردی که در برنامه نویسی به شدت مهم است، API است. API مخفف کلمات Application Programming Interface به معنی «رابط برنامه نویسی کاربردی» است. APIها در برنامه نویسی به شدت کاربردی هستن. برنامه نویسان همه روزه با API سرو کار دارند. در این مقاله معنی API و کاربرد API در برنامه نویسی را توضیح خواهیم داد.
در این مقاله به موضوعات زیر خواهیم پرداخت:
- API چیست؟
- تاریخچه API
- کاربرد API چیست؟
- ارائه API به کاربران چه سودی برای آن شرکت دارد؟
- انواع API
- نقش API در زندگی روزمره
- چگونه از API استفاده کنیم؟
- لیست APIهای عمومی (رایگان و غیر رایگان)
API چیست؟
خب حال به زبان ساده ببینیم API چیست؟ APIها مجموعهای از توابعی هستند که یک برنامه از برنامه دیگر فرا میخواند. در واقع توسط API یک سری درخواست (Request) را به سرور ارسال میکنیم و توسظ API، پاسخ (Response) آن سرور را دریاقت میکنیم.
بگذارید با یک مثال ساده API در دنیای واقعی را مثال بزنیم و سپس به سوال «API در برنامه نویسی چیست؟» پاسخ دهیم. منوی غذای یک رستوران را در نظر بگیرید. در این منوی رستوران لیست انواع غذاها با توضیحاتش ذکر شده است. شما به گارسون غذای خود را سفارش میدهید و گارسون سفارش شما را به آشپز رستوران میرساند و آن آشپر بعد از آماده کردن غذا، آن را تحویل گارسون میدهد و سپس گارسون آن را خدمت شما میآورد.
در این مثال گارسون نقش واسط یا همان API را ایفا میکند. مشتری کاری به نحوه پخت غذا و آماده سازی آن ندارد و فقط سفارش خود را دریافت میکند. مفهوم API در برنامه نویسی نیز به همین شکل است. بگذارید یک مثال از API در برنامه نویسی بزنیم.
یک سایت فروشگاهی را در نظر بگیرید. وقتی روی دکمه "اضافه کردن به سبد خرید" کلیک میکنیم، یک درخواست توسط API به سروری که سایت فروشگاهی روی آن قرار دارد ارسال میکنیم. این سرور محصول را به سبد خرید اضافه میکند و پاسخ آن را توسط API به ما نشان میدهد و ما محصول را در سبد خرید خودمان مشاهده میکنیم. کاری به این نداریم که سرور چگونه این کار را انجام میدهد، فقط منتظر پاسخ آن توسط API هستیم تا در مرورگر خود آن را مشاهده کنیم.
تاریخچه API
در قسمت بالا به سوال API چیست؟ پاسخ دادیم اما در این قسمت ببینیم که چه کسی API را اختراع کرد؟ APIهای اولیه توسط David Wheeler ،Maurice Wilkes و Stanley Gill که بسیاری آنها را به عنوان پدرخوانده برنامه نویسی و نرمافزار شناخته میشوند، ساخته شد. کار آنها در دهههای 40 و 50 میلادی زمینه ساز بسیاری از مواردی بود که به انقلاب نرمافزار در دهههای 70 و 80 میلادی تبدیل شد.
کاربرد API چیست؟
حال که با تعریف API آشنا شدیم، در این قسمت ببنیم که کاربرد API چیست؟ در واقع با API میتوان یک نرمافزار را با نرمافزار دیگر ارتباط داد. اگر بخواهیم API را به شکل سادهتر توضیح دهیم، سایت دولوپر شو را در نظر بگیرید. ما میخواهیم در این سایت، از «گوگل ریکپچا» در فرمهای خودمان مانند ثبتنام و ورود استفاده کنیم.
گوگل ریکپچا یک برنامه برای تشخیص ربات از انسان است و در برابر رباتهایی که اسپم میکنند و هر لحظه اطلاعات میفرستند و خرابکاری میکنند جلوگیری میکند. این سرویس توسط گوگل معرفی شده است. اگر بخواهیم از این امکانات گوگل در سایت خودمان استفاده کنیم، باید از API استفاده کنیم. در واقع توسط API، از نرمافزار گوگل که در اینجا «گوگل ریکپچا» است، در سایت دولوپرشو که یک نرمافزار دیگر است ارتباط بر قرار میکنیم.
بگذارید یک مثال دیگر بزنیم. احتملا شما نیز در سایتها «دکمه ورود با اکانت گوگل» (Login with Google Account) را دیدهاید. ورود با اکانت گوگل نیز یکی از امکانات گوگل است که از طریق API میتوانید در سایت خود استفاده کنید و به جای اینکه کاربران در سایت شما ثبت نام کنند، از طریق اکانت گوگل خودشان در سایت شما احراز هویت کرده و وارد پنل خود شوند.
در تعریف APIها گفتیم که واسط میان دو نرمافزار هستند. مثلا اگر فرانتاند یک سایت را با React (کتابخانه JavaScript) بزنید و بکاند سایت را با لاراول (فریمورک PHP) بزنید، از طریق API میتوان میان فرانتاند و بکاند ارتباط بر قرار کرد و یک سایت را تکمیل نمود.
پس به طور کلی در پاسخ به سوال APIچیست و چه کاربردی دارد؟ باید بگوییم که APIها این امکان را به ما میدهند که از ویژگیها و امکانات یک نرمافزار دیگر، در نرمافزار خودمان استفاده کنیم. یعنی API واسط یک نرمافزار با نرمافزار دیگر است.
انواع API
بعد از تعریف API و پاسخ به سوال API چیست؟ در قسمت بالا، در این بخش انواع APIها از لحاظ مختلف را بررسی میکنیم.
انواع API از لحاظ سیاستهای انتشار
- API خصوصی (Private): این نوع APIها داخل یک سازمان برای بهبود خدمات یا راه حل استفاده میشوند.
- API عمومی یا باز (Public): این نوع APIها به صورت عمومی و باز در اختیار همه قرار میگیرد.
- API مشارکتی (Partner): این نوع APIها آزادانه در بازار هستند اما در دسترس عموم نیستند و برای استفاده از آنها باید امتیاز خاصی داشت.
انواع API عمومی
- API رایگان: این نوع APIها بهصورت رایگان در اختیار همه قرار میگیرند.
- API تجاری: برای استفاده از این نوع APIها باید حق اشتراک پرداخت کرد مثلا ماهانه هزینهای را از بابت ارائه خدمات آن API باید پرداخت نمود.
انواع API از لحاظ موارد استفاده
- API تحت وب: این نوع APIها که رایجترین API هستند، درخواست کاربر از طریق مرورگر را به سرور انقال میدهند و پاسخ سرور را به مرورگر کاربر ارسال میکنند.
- API ریموت: این APIها برای تعامل اپلیکیشنهایی که بر روی دستگاههای متفاوت قرار دارند، به کار میروند. برای مثال یکی از اپلیکیشنها به منابعی که خارج از دستگاهی که بر روی آن قرار دارد دسترسی پیدا میکند.
- API سیستمعامل: این APIها نحوه استفاده اپلیکیشن از خدمات و منابع سیستمعامل را تعریف میکنند. برای مثال سیستمعامل ویندوز، لینوکس و مکینتاش، APIهای مربطو به خود را دارند.
- API پایگاه داده: این APIها ارتباط میان اپلیکیشن را با پایگاه داده فراهم میکنند.
انواع پروتکلهای API
هدف از پروتکلهای API، استاندارد سازی انتقال دادهها میان وب سرویسها است.
- RPC
- SOAP
- REST
ارائه API به کاربران چه سودی برای آن شرکت دارد؟
تا اینجای مقاله به سوال API چیست؟ پاسخ دادیم. شاید به این فکر افتاده باشید که شرکتها چرا باید API خود را در اختیار ما قرار دهند تا از امکانات سایت آنها در سایت خود کنیم؟
استفاده از API برای جذب کاربر و بازدید بیشتر
در این روش شرکتها برای اینکه کاربر بیشتری جذب کنند، API خود را در اختیار آنها قرار میدهند. برای مثال وقتی در سایت خود از دکمه «ورود با اکانت گوگل» استفاده میکنیم و کاربرمان روی آن کلیک میکند، به صفحه گوگل نیز هدایت میشود و گوگل میتواند از این طریق بازدید و کاربر بیشتری جذب کند.
استفاده از API برای دریافت هزینه (API اقتصادی)
برخی از سایتها برای استفاده از امکانات آنها، API خود را پولی میکنند. مثلا تا 100 درخواست در ماه API رایگان در اختیار شما قرار میدهند و بعد از 100 درخواست، API پولی در اختیار شما قرار میدهند. به این روش از ارائه API را API اقتصادی یا Economic API میگویند.
نقش API در زندگی روزمره
حال که با مفهوم API و کاربرد آن در برنامه نویسی آشنا شدیم. ببنیم برنامهها چگونه از این امکانات API استفاده میکنند. در این قسمت نمونهای از چند برنامه موفق مثال میزنیم که از طریق API کار میکنند.
API آنفالویاب و فالوور بگیر اینستاگرام
شاید از برنامههایی مانند فالوور بگیر اینستاگرا یا آنفالویاب، استفاده کرده باشید. این برنامهها توسط API اینستاگرام، به پیج شما دسترسی پیدا میکنند و میتوانند از طریق رباتی که برنامه نویسی شده، مشغول به فالو کردن کاربران، لایک کردن، کامنت گذاشتن و... کنند و آن کاربران نیز در قبال آن فعالیتها، شما را فالو کنند.
API ربات تلگرام
از طریق API تلگرام میتوان رباتهای تلگرامی را برنامه نویسی کرد. مثل بستن گفتگو در ساعات خاص، حذف کابر از گروه و... که همه این کارها توسط API که تلگرام در اختیار برنامه نویس قرار داده است امکانپذیر است.
API تلگرامهای غیر رسمی
اگر بخواهیم بهتر به سوال API چیست؟ پاسخ دهیم، توجه شما را به تلگرامهای غیر رسمی جلب میکنم. آیا تا به حال فکر کردهاید که تلگرامهای غیر رسمی مانند موبوگرام یا تلگرام طلایی چگونه کار میکنند؟ در حقیقت تلگرام یک اپلیکیشن Open Source یا منبع باز است. یعنی سورس کد آن را میتوان دستکاری یا ویرایش کرد. برنامه نویسان موبوگرام نیز از طریق API که شرکت تلگرام در اختیار آنان قرار داده، امکانات اپلیکیشن تلگرام را به اپلیکیشن موبوگرام اضافه میکنند و همچنین به دلیل اپن سورس بودن تلگرام، یک سری امکانات مانند حالت روح به آن اضافه میکنند.
API تاکسی اسنپ
نمونه دیگر API در زندگی روزمره، API اسنپ است. وقتی شما در اپلیکیشن اسنپ، یک مبدا و یک مقصد انتخاب میکنید، از طریق API اطلاعات شما مانند: نام، نام خانوادگی، شماره موبایل، مبدا و مقصدی که انتخاب کردید و... در قالب JSON به سرورهای اسنپ ارسال میشود. اسنپ نیز با توجه به اطلاعات و مبدا شما، نزدیکترین تاکسی اسنپ را به شما انتخاب میکند و پاسخ آن را دوباره از طریق API در اپلیکیشن به شما نشان میدهد که شامل اطلاعات راننده اسنپ است.
API هواشناسی
وقتی یک سایت یا یک اپلیکیشن، آب و هوای کشورها، استانها و شهرها را نشان میدهد، از API هواشناسی برای نشان دادن این اطلاعات استفاده میکند. در حقیقت خود برنامه نمیتواند آب و هوای تمام کشورها و استانهای آن را به همراه لیست شهرهای آن نشان دهد. اما میتواند از طریق API هواشناسی این اطلاعات را بگیرد و در برنامه خود استفاده کند.
API نقشه گوگل
اگر بخواهیم به یکی دیگر از کابردهای API در برنامه نویسی را برای شما بیان کنیم، نقشه گوگل (Google Map) است. گوگل برای نقشه گوگل خود، یک API ساخته است که میتوانید از آن در برنامههای خود استفاده کنید. برای مثال اگر قصد ساخت یک برنامه مانند اسنپ را دارید، به دو روش میتوانید عمل کنبد:
- روش اول: خودتان از اول یک نقشه مانند گوگل را برنامه نویسی کنید که کاری بسیار سخت، پر هزینه و زمانبر است.
- روش دوم: استفاده از API نقشه گوگل در برنامه خود است که بدون اینکه خودتان نقشه بسازید، از نقشه گوگل در برنامه خود برای تعیین مبدا و مقصد مسافر، استفاده کنید.
چگونه از API استفاده کنیم؟
حال که به سوال «API چیست و چه کاربردی دارد؟» پاسخ دادیم، ببینیم که چگونه از API استفاده کنیم؟ برای این کار شما باید دانش برنامه نویسی داشته باشید. یعنی برای اینکه از طریق API از امکانات یک سایت در سایت خود یا اپلیکیشن خود استفاده کنید، باید برنامه نویسی کنید. وقتی یک سایتی API ارائه میکند، مستندات و راهنمای استفاده از API را نیز در سایت خود قرار میدهد. شما از طریق این مستندات میتوانید از این APIها استفاده کنید.
اما نمایش API به چه شکل است؟ یک API معمولا به صورت یک کد JSON است. جیسون مخفف کلمات JavaScript Object Notation به معنی «نمادگذاری اشیا در جاوا اسکریپت» است. در واقع جیسون یک Object جاوا اسکریپت است که برای ذخیره اطلاعات و یا انتقال آن استفاده میشود. برای مثال اگر روی لینک API گیتهاب من به آدرس https://api.github.com/users/reza-asgharzadeh کلیک کنید با تصویر زیر روبرو خواهید بود.
این یک نمونه کد JSON از API سایت گیتهاب است که اطلاعات کاربر را در قالب JSON نشان میدهد. برای مثال در قسمت Login آیدی گیتهاب من را که reza-asgharzadeh است نشان میدهد و در قسمت blog، آدرس سایت من که https://developersho.com است را نشان میدهد. شما میتوانید مانند گوگل از طریق API گیتهاب کاربران خود را از طریق دکمه «ورود با اکانت گیتهاب» احراز هویت کنید.
لیست APIهای عمومی (رایگان و غیر رایگان)
اگر میخواهید از APIهای عمومی در سایت یا اپلیکیشن خود استفاده کنید، یک آدرسی در گیتهاب وجود دارد که لیست APIها را معرفی کرده است. برای مشاهده این لیست، اینجا کلیک کنید.
جمعبندی:
در این مقاله با سوالات «API چیست؟» و «کاربرد API چیست؟» آشنا شدیم. هر سوالی در مورد ایپیآی در برنامه نویسی دارید، لطفا در قسمت نظرات با ما در میان بگذارید تا به آن پاسخ دهیم.