آیا تا به حال اصطلاح API را شنیدهاید و به این فکر کردهاید که دقیقا چیست؟ آیا در مورد اینکه چه کاری انجام میدهد یا کجا استفاده میشود چیزی میدانید؟
API اصطلاحی است که هنگام شروع برنامه نویسی با آن مواجه خواهید شد. بسیاری از تازه واردان با درک این مفهوم مشکل دارند و توضیحات مبهمی در مورد آن دریافت میکنند.
در حال حاضر APIها صرفا منحصر به وب نیستند و زمانی که برای اپلیکیشنهای موبایل نیز برنامه نویسی میکنید از آنها استفاده زیادی خواهید کرد. در گذشته APIها تا حد زیادی با سیستمعاملهای کامپیوتر و برنامههای دسکتاپ مرتبط بودند، اما طی سالهای اخیر شاهد ظهور Web APIها بودهایم.
API چیست؟
این اصطلاح مخفف عبارت Application Programming Interface است. اما معنی آن چیست و دقیقا چه کاربردی دارد؟
من نمیخواهم مانند بسیاری از مقالات و آموزشهای موجود در اینترنت به شما یک تعریف مبهم و پر از اصطلاحات تخصصی بدهم.
بنابراین به طور خلاصه API کدی است که خودتان آن را ننوشتهاید و دارای متدهایی است که مجاز به فراخوانی آنها هستید. یعنی میتواند کدی باشد که توسط کامپیوتر خود دانلود و اجرا میکنید یا میتواند در جای دیگر وب قرار گرفته باشد.
این تمام چیزی است که یک API در ذات خود دارد.
پس به مفاهیم دیگر فکر نکنید و زمانی که اسم API را میآوریم فقط به تعریف ذکر شده در بالا پایبند باشید.
اما بیایید برای درک بهتر این موضوع یک API در جاوا اسکریپت بسازیم که به ما امکان میدهد غذای خود را بپزیم.
همانطور که گفته شد، میتوانیم APIهایی داشته باشیم که روی سیستم لوکال هستند یا در یک سرور راه دور ذخیره میشوند، یا ممکن است چیزی باشد که میتوان آن را دانلود کرد. ما یکی را به صورت لوکال ساختهایم و نام آن را API گذاشتهایم، اما میتوان آن را هر چیز دیگری نامگذاری کرد.
این یک فایل جاوا اسکریپت است که من دانلود کرده و در یک پوشه محلی ذخیره کردهام.
وقتی صفحات وب خود را اجرا میکنم، میتوانم از این قطعه کد استفاده کنم:
در زیر یک شی را برمیگرداند و این شی سه ویژگی دارد.
میتوانیم این متدها را بعد از عملگر نقطه فراخوانی کنیم.
هنگامی که این متدها را پشت سر هم فراخوانی میکنیم، خروجیای مانند زیر دریافت خواهیم کرد:
تابع ()steamVeggies را داریم که خود تابع دیگر ()addSpices را فراخوانی میکند.
در اینجا ()addSpices را نمیتوان مستقیما فراخوانی کرد، به همین دلیل ()steamVeggies را فراخوانی کردهایم تا ()addSpices را اجرا کند.
اکنون کاری که انجام میشود این است: کنسول پیامهایی را در خروجی نمایش میدهد. هرچند مهم نیست که چه کاری انجام میشود، مهم این است که یک شی داریم. این یکی از فایلهایی است که میتوان دانلود و استفاده کرد یا آن را در یک سرور ذخیره نمود، یا ممکن است چیزی باشد که دانلود کرده و همراه با فایلهای دیگر نگه میداریم، سپس در فایل اسکریپت خود از آن استفاده میکنیم.
بنابراین میتوان عبارت API را همراه با یک نقطه نوشت و از متدهای آن استفاده کرد.
اینها متدهایی هستند که میتوانیم آنها را فراخوانی کنیم:
موارد دیگری مانند ()addSpices در API وجود دارد که نمیتوانیم مستقیماً آنها را فراخوانی کنیم.
مثلا فراخوانی این یکی به ما خطا میدهد:
بنابراین کدی در بک-اند وجود دارد که آن را نمیبینیم و نمیدانیم چه کاری انجام میدهد، اما برخی کدها در دید ما قرار میگیرند که عمومی هستند و میتوانیم به آنها در کد خود دسترسی داشته باشیم. به عنوان مثال میتوانیم از step1()، ()step2 و ()step3 استفاده کنیم. اینها مواردی هستند که توسط API در دسترس قرار میگیرند.
در عبارت Application Programming Interface، بخش Interface شامل این سه متد است:
این متدها رابطی هستند تا بتوان با API تعامل داشت.
حالا فهمیدید که چرا به آن Application Programming Interface میگویند؟
با اینکه از نام API استفاده شده، اما لازم نیست دقیقا آن را API نامید. میشد اسمش را هر چیز دیگری گذاشت، حتی نام خودتان!
تنها نکتهای که باید توجه داشت این است که منبع کد از ما پنهان شده و آنچه میدانیم طبق مستندات است، بر این اساس از متدهای آن در برنامه خود استفاده خواهیم کرد.
همه چیزهایی که گفتیم، کلیات یک API بود.
بنابراین برای یادآوری: کدی که شخص دیگری نوشته است، ما به آن دسترسی داریم و میتوانیم از آن در برنامه خود برای انجام یک کار خاصی استفاده کنیم. میتواند روی یک سرور باشد، میتواند روی کامپیوتر شخصی باشد، یا ممکن است چیزی باشد که باید از طریق HTTP با آن ارتباط برقرار کرد، یعنی یک درخواست AJAX به API ارسال کنیم تا اطلاعات را دریافت نماییم.
اگر هنگام توسعه وب با عبارت RESTful API مواجه شدید، سردرگم نشوید. این نیز یک کد است اما از سبک معماری خاصی پیروی میکند و از درخواستهای HTTP برای دسترسی و استفاده از دادهها کمک میگیرد. از این دادهها میتوان برای GET، PUT، POST و DELETE اطلاعات استفاده کرد که به خواندن، بهروزرسانی، ایجاد و حذف عملیات مربوط به منابع اشاره دارد.
اما به طور خلاصه فقط کدی است که شخص دیگری نوشته تا روند کار ما را سادهتر کند.
APIهای مربوط به حوزه وب
APIها در وب همانند چیزی هستند که اپراتورهای سوئیچ برای ارتباطات از راه دور عمل میکنند. مانند نحوه استفاده اپراتورهای switchboard برای اتصال تماسها، APIها هم ارتباط بین برنامهها یا نرم افزارها را امکانپذیر میکنند. پس API یا رابط برنامه نویسی بخشی از یک سرور راه دور است و هنگامی که یک وب سایت را در مرورگر خود باز میکنید، درخواستها را دریافت کرده و پاسخها را ارسال میکند.
به عنوان مثال roocket.ir را در نظر بگیرید، درخواست داده به سرور Roocket ارسال میشود. هنگامی که مرورگر شما دادهها را دریافت و پاسخ کد را پردازش کرد، مرورگر صفحه راکت را نمایش میدهد. در این مورد، سرور Roocket API است که ارتباط را فعال کرده و به شما امکان دسترسی به صفحه وب را میدهد.
چیزی که در اینجا اتفاق میافتد این است: درخواست شما به کدی میرود که شخص دیگری نوشته و در سرور ذخیره کرده، این کد به شما امکان دسترسی به صفحه فعلی را میدهد که در جای دیگری یعنی همان سرور ذخیره شده است.
پس درخواست شما مستقیما به سرور نمیرود، بلکه به یک API رفته و آن API تصمیم میگیرد که با آن چه کار کند.
APIها همچنین تعامل و تغییر دادهها را نیز بین دو سایت امکانپذیر میکنند، مانند زمانی که یک صفحه وب دکمه اشتراکگذاری در شبکههای اجتماعی را دارد و با کلیک کردن روی این دکمه ارتباط با اکانت شما برقرار میشود.
ضمن اینکه API بسته به جایی که از آن استفاده میشود، میتواند اشکال مختلفی داشته باشد و نامی متناسب با آن خواهد گرفت. به عنوان مثال:
- Open API یا Public API: این APIها با حداقل محدودیت در دسترس توسعه دهندگان و سایر کاربران قرار میگیرند.
- Partner API: این APIها توسط شرکای تجاری در دسترس قرار میگیرند. یعنی به صورت عمومی در دسترس نیستند و برای دسترسی به آنها به مجوز خاصی نیاز است.
- Internal API یا Private API: این APIها از دید کاربران خارجی پنهان هستند و فقط توسط سیستمهای داخلی قابل دسترساند. یعنی برای استفاده خارج از شرکت نیستند، بلکه برای استفاده در تیمهای توسعه داخلی به منظور بهرهوری بهتر و استفاده مجدد از سرویسهاست.
علاوه بر تفاوت بین APIهای Open، Partner و Internal باید رویکرد دیگری را نیز برای دستهبندی آنها ذکر کنیم:
- Data API دسترسی CRUD را به مجموعه دادههای زیربنایی برای پایگاههای داده مختلف یا سرویس دهندگان ابری SaaS فراهم میکند.
- Internal service API شامل سرویسهای داخلی، بازتاب بخشهایی از فرآیندهای داخلی یا برخی اقدامات پیچیده است.
- External service API خدمات شخص ثالثی است که میتواند در سرویسهای موجود شرکت تعبیه شود تا ارزش بیشتری به ارمغان بیاورد.
- User experience API شامل APIهای ترکیبی برای کمک به توسعه دهندگان برنامه است تا تجربه مناسبی را برای هر پلتفرم خاص (دسکتاپ، موبایل، VPA، IoT) ارائه دهد.
از طرف دیگر APIها ممکن است بیشتر به عنوان APIهای local، web و program طبقهبندی شوند:
- Local API یک حالت کلی است که خدمات سیستمعامل یا میانافزار را به اپلیکیشنهای مختلف ارائه میدهد. APIهای .NET مایکروسافت، TAPI (API تلفن) برای برنامههای صوتی و APIهای دسترسی به پایگاه داده نمونههایی از Local APIها هستند.
- Web API برای نمایش منابع پرکاربرد مانند صفحات HTML طراحی شده و با استفاده از یک پروتکل ساده HTTP قابل دسترسی است (هر URL وب یک API وب را فعال میکند). APIهای وب اغلب REST یا RESTful نامیده میشوند (قبلا به آن پرداختیم).
- Program API مبتنی بر تکنولوژی فراخوانی از راه دور (RPC) است که باعث میشود یک کامپوننت برنامه از راه دور برای بقیه نرم افزار، لوکال به نظر برسد. به عنوان مثال APIهای معماری سرویسگرا (SOA)، APIهای سری WS مایکروسافت و موارد دیگر.
نمونههای API در جامعه توسعه دهندگان
شرکتهایی مانند فیسبوک، گوگل و یاهو APIهایی را منتشر میکنند تا توسعه دهندگان را تشویق به توسعه قابلیتهای خود کنند. این APIها همه چیز را به ما دادهاند، از ویژگیهای جدید اینترنتی که سایتهای دیگر را سرویسدهی میکنند گرفته تا اپلیکیشنهای تلفن همراه که دسترسی آسان به منابع وب را ارائه میدهند.
ویژگیهای جدید مانند تحویل محتوا، واقعیت افزوده و کاربردهای جدید گجتهای پوشیدنی تا حد زیادی از طریق این APIها ایجاد میشوند.
از این به بعد هر زمان که عبارت API را شنیدید، آن را به عنوان کدی در نظر بگیرید که به دو نرمافزار اجازه میدهد تا بین برنامهها، پایگاه دادهها و دستگاهها برای ارائه داده و ایجاد اتصال با یکدیگر ارتباط برقرار کنند.
جمعبندی
API کدهایی است که خودتان ننوشتهاید و آن کد دارای متدهایی است که مجاز به استفاده از آنها هستید.
در زمینه وب، یک API بخشی از یک سرور است که درخواستها را دریافت کرده و پاسخ مرتبط با آن را هنگامی که به وبسایتی در مرورگر خود مراجعه میکنید، ارسال مینماید.
API بسته به جایی که از آن استفاده میشود، میتواند اشکال مختلفی داشته باشد. برای مثال Open API یا Public API، Partner API، Internal API یا Private API.
همچنین میتوان آن را به Local API، Web API و Program API نیز طبقهبندی کرد.
به عبارت دیگر API کدی است که به دو نرم افزار اجازه میدهد با یکدیگر ارتباط برقرار کنند.
امیدوارم درک واضحی از ماهیت API و تفاوتهای ظریف انواع مختلف آن پیدا کرده باشید. من افراد زیادی را دیدهام که با فهمیدن این اصطلاح همواره دست و پنجه نرم میکنند. بنابراین نگاه کردن به آن از زاویهای دیگر، به سردرگمی که هنگام یادگیری این اصطلاح ایجاد شده پایان میدهد.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید