API چیست؟
امروزه عبارت API در موارد زیادی استفاده میشود. سیستمعامل، مرورگر وب و بهروزرسانیهای برنامههای کاربردی، اغلب API های جدید ارائه میدهند؛ اما API چیست ؟
Application Programming Interface
عبارت API مخفف Application Programming Interface (رابط برنامهنویسی برنامه کاربردی) است.
به API مانند منوی یک رستوران نگاه کنید. منو شامل لیستی از غذاها به همراه توضیحی در مورد هر غذا است. زمانی که یکی از غذاهای منو را سفارش میدهید، آشپزخانه رستوران کار تهیه غذا را انجام میدهد. شما دقیقاً نمیدانید که رستوران چگونه غذا را آماده میکند و درواقع نیازی هم به دانستن آن ندارید.
بهطور مشابه، API عملیاتی که توسعهدهندگان از آنها استفاده میکنند را به همراه شرح فعالیت آنها لیست میکند. توسعهدهنده نیازی به دانستن چگونگی ساخت پنجره «Save As» توسط سیستمعامل ندارند، بلکه تنها دانستن وجود این امکان در برنامه برای آنها کافی است.
این که توسعهدهندگان، داده خودشان را به API میدهند تا نتیجه را دریافت کنند تفسیر درستی نیست . این موضوع بیشتر شبیه یک رستوران خیالی است که غذا را با مواد اولیهای که شما با خود به رستوران بردهاید، برایتان آماده کند.
لیکن API بهطورکلی بسیار دقیق است. API ها به توسعهدهندگان اجازه میدهند تا با استفاده از مزایای پیادهسازی پلتفرم در زمان صرفهجویی کنند و به اصل مطلب بپردازند. بدین ترتیب نیاز کمتری به تولید کد دارند و همچنین سازگاری بیشتری با برنامههای کاربردی همان پلتفرم ایجاد میکند. API ها دسترسی به منابع سختافزاری و نرمافزاری را کنترل میکنند.
API ها زندگی را برای توسعهدهندگان سادهتر میکنند
تصور کنید میخواهید یک برنامه کاربردی را برای iPhone توسعه دهید. سیستمعامل iOS همانند دیگر سیستمعاملها تعداد زیادی API تولید میکند، تا کار را برای شما سادهتر کند.
بهعنوانمثال زمانی که شما میخواهید یک مرورگر را برای نمایش یک یا چند صفحه وب در برنامهتان بگنجانید، نیازی نیست که یک مرورگر را برای برنامهتان از ابتدا برنامهنویسی کنید. بلکه میتوانید از WKWebView API برای قرار دادن مرورگر Safari در برنامهتان استفاده کنید.
اگر میخواهید در برنامهتان با استفاده از دوربین iPhone عکس یا ویدیو تهیه کنید، نیازی نیست که رابط کاربری دوربین خودتان را بنویسید. شما از API دوربین برای گنجاندن دوربین داخلی iPhone در برنامه خود استفاده میکنید. اگر API ها وجود نداشتند تا کار را ساده کنند، توسعهدهندگان برنامه کاربردی باید نرمافزار دوربین خودشان را ایجاد میکردند و ورودیهای سختافزار دوربین را تفسیر میکردند؛ اما توسعهدهندگان سیستمعامل Apple همه این دشواریها را انجام دادهاند، بنابراین توسعهدهندگان میتوانند تنها با استفاده از API دوربین، دوربین را در برنامهشان تعبیه کنند و به کارشان ادامه دهند. علاوه بر این، زمانی که Apple به توسعه API دوربین میپردازد، همه برنامههای کاربردی مبتنی بر آن بهطور خودکار از مزایای آن بهرهمند میشوند.
این مسئله برای همه پلتفرمها قابلتعمیم است. بهعنوانمثال، آیا شما میخواهید یک دیالوگ باکس در ویندوز ایجاد کنید؟ API ای برای آن وجود دارد. آیا میخواهید شناسایی با اثرانگشت را در اندروید پشتیبانی کنید؟ برای آنهم یک API وجود دارد؛ بنابراین شما نیازی به بررسی حسگر اثرانگشت شرکتهای مختلف در اندروید ندارید. توسعهدهندگان نیاز به اختراع دوباره و دوباره چرخ ندارند.
API ها دسترسی به منابع را کنترل میکنند
از API ها برای کنترل دسترسی به سختافزارها و عملیات نرمافزاری که ممکن است هر برنامهای اجازه دسترسی به آنها را نداشته باشد، نیز استفاده میشود. به همین دلیل API ها اغلب نقش بزرگی در امنیت ایفا میکنند.
بهعنوانمثال، اگر شما تاکنون از وبسایتی بازدید کردهاید و پیغامی را در مرورگر مشاهده کردهاید که از شما در مورد مکان دقیقتان سؤال پرسیده است، آن وبسایت سعی در استفاده از geolocation API در مرورگر وب شما دارد. مرورگرها چنین API هایی را ارائه میدهند تا دسترسی به موقعیت شما را برای توسعهدهندگان وب سادهتر کنند. آنها تنها میپرسند «شما کجا هستید؟» و قسمت سخت کار را برای دسترسی به GPS یا شبکههای Wi-Fi نزدیک برای یافتن موقعیت فیزیکی شما، همگی بر عهده مرورگر است.
بدین ترتیب، مرورگرها این اطلاعات را از طریق یک API نیز ارائه میدهند زیرا کنترل دسترسی به آن امکانپذیر است. زمانی که یک وبسایت میخواهد به موقعیت دقیق فیزیکی شما دست یابد، تنها راه ممکن استفاده از API مکانی است؛ و زمانی که یک وبسایت درخواست دسترسی به موقعیت شما را دارد، شما – کاربر- میتوانید درخواست او را بپذیرید یا رد کنید. تنها راه دسترسی به منابع سختافزاری همانند حسگرهای GPS از طریق API است بنابراین مرورگر توانایی کنترل دسترسی به سختافزار و محدود نمودن آنچه برنامههای کاربردی میخواهند انجام دهند را دارد.
قانون مشابهی در سیستمعاملهای موبایلهای پیشرفته مانند iOS و اندروید استفاده میشود که برنامههای کاربردی دارای مجوزهایی هستند که میتوانند با کنترل دسترسی به API ها اجرایی شوند. بهعنوانمثال، اگر توسعهدهندهای تقاضای دسترسی به دوربین را از طریق API دوربین داشته باشد، شما میتوانید درخواست مجوز را رد کنید و برنامه کاربردی دیگر راهی برای دسترسی به دوربین دستگاه شما نخواهد داشت.
فایل سیستمها که از مجوزها استفاده میکنند – همانطور که در ویندوزها، مک و لینوکس انجام میشود- دارای همان مجوزهایی هستند که توسط API ی فایل سیستم اجرا میشود. یک برنامه کاربردی معمولی دسترسی مستقیم به دیسک سخت فیزیکی خام ندارد. در عوض برنامه کاربردی از طریق یک API به فایلها دسترسی دارد.
از API ها برای برقراری ارتباط بین سرویسها استفاده میشود
دلایل دیگری نیز برای استفاده از API ها وجود دارد. بهعنوانمثال، اگر تاکنون آبجکت Google Maps تعبیهشده در یک وبسایت را دیده باشید، میبینید که آن وبسایت از Google Maps API برای تعبیه نقشه استفاده میکند. گوگل چنین API هایی را برای توسعهدهندگان وب ارائه داده است تا بتوانند با استفاده از آنها آبجکتهای پیچیده را بهدرستی در وبسایتشان قرار دهند. اگر چنین API هایی وجود نداشت، توسعهدهندگان باید نقشههای خودشان را تولید کرده و دادههای آن را فراهم میکردند، فقط برای اینکه یک نقشه تعاملی در وبسایت قرار دهند.
بهعلاوه، به دلیل اینکه این یک API است، گوگل میتواند دسترسی به Google Maps را در وبسایتهای دیگر کنترل کند و تضمین کند که آن را بهدرستی نمایش میدهند نه اینکه آن را بهصورت یک قاب بههمریخته در وبسایتشان تعبیه کنند.
این موضوع شامل سرویسهای آنلاین مختلفی میشود. علاوه بر این API هایی دیگری نیز برای درخواست ترجمه متن از Google Translate یا تعبیه نظرات فیسبوک یا توییت هایی از Twitter وجود دارد.
کلام آخر
API ها قراردادهای استانداردی هستند که تعیین میکنند توسعهدهندگان چگونه با یک سرویس و انواع خروجیهای آن تعامل داشته باشند. اگر این مطلب را دریافتید، حالا میدانید که API چیست. اگر مشاهده کردید که یک پلتفرم نرمافزاری یا سرویس، API های جدیدی برای سختافزارها یا سرویسهای مختلف اضافه کرده است، بدانید که بدین ترتیب توسعهدهندگان میتوانند راحتتر از مزایای چنین خصوصیاتی بهره ببرند.