رابط برنامهنویسی کاربردی یا API مخفف Application Programming Interface است. API در واقع یک واسطه نرم افزاری است که به دو برنامه اجازه می دهد تا با یکدیگر صحبت کنند. هر بار که از یک برنامه مانند Facebook در تلفن همراهتان استفاده می کنید و یا یک پیام فوری در برنامه یکی از سرویس ها ارسال می کنید یا وضعیت پیام های خود را بررسی می کنید در پشت صحنه در حال استفاده از API هستید.
رابط برنامهنویسی کاربردی یا API چیست؟
API به عنوان مشخصات تعامل با یک مؤلفه نرم افزاری تعریف شده است. برای درک بهتر روش کار آن بهتر است با یک مثال آن را شرح دهیم. تصور کنید که در یک رستوران نشسته اید و در حال انتخاب از منوی انتخابی هستید. آشپزخانه بخشی از “سیستم” است که سفارش شما را آماده می کند. اما شما امکان دسترسی به سرآشپز را ندارید و نمی توانید برای دریافت سرویس وارد آشپزخانه شوید.
بنابراین برای ارسال درخواست و دریافت سرویس نیاز به برقراری ارتباط هستید. به همین دلیل به یک شخص سوم که رابط بین شما و آشپزخانه باشد نیاز دارید. اینجاست که گارسون یا همان API وارد عمل میشود. گارسون دقیقا همان پیام دهنده یا API است که درخواست یا سفارش شما را می گیرد و به آشپزخانه یا همان سیستم انتقال می دهد. بر این اساس سیستم نتیجه می گیرد که چه کاری باید انجام شود. سپس گارسون پاسخ (که در اینجا غذای سفارش داده شده است) را به شما تحویل میدهد.
کار یک رابط برنامه نویسی کاربردی نیز همین است. آسان سازی ارتباط بین یک یا چند مولفه نرم افزاری، مانند درگاه های پرداخت بانکی.
تاریخچه API
اولین ظهور در رابطهای برنامه نویسی کاربردی متعلق به SOA مخفف Service Oriental Architecture است که یک نسخه آزمایشی از SOA بود. این نسخه در حدود سال ۲۰۰۰ میلادی در بخشی از شرکت SOA به صورت آزمایشی ایجاد و از شرکت خارج شد.
پس از آن و به محض ترکیدن اولین حباب COM، سیستم عاملها به دنبال راههای ابتکاری برای یکپارچه سازی محصولات در وب سایتهای تجارت الکترونیکی بودند و APIهای وب که بر روی زیرساخت های موجود HTTP ساخته شده بود، ابزاری مناسب برای این کار بودند.
با این حساب، تعداد انگشت شماری از پیشگامان فناوری قدم برداشتند تا اولین کاربردهای APIها را برای فروش و مدیریت تجارت تعریف کنند و یک تکامل ده ساله را آغاز کردند که اکنون می توانیم تاریخچه اولیه APIهای وب نامگذاری کنیم.
امنیت در رابط برنامهنویسی کاربردی
علاوه بر ارائه سرویس یک لایه امنیتی نیز هست. در زمان استفاده از API داده های تلفن شما هرگز به طور کامل در دسترس سرور قرار نمی گیرد و به همین ترتیب سرور هرگز به طور کامل در اختیار تلفن شما قرار نمیگیرد. در عوض هر دو با بستههای کوچک از داده ارتباط برقرار میکنند و فقط آنچه را که لازم است به اشتراک میگذارند. مانند اشتراک گذاری دادههای گرفتن سفارش از شما که فقط شامل این است که به رستوران میگویید چه چیزی میخواهید و آنها به شما می گویند که در عوض به چه چیزهایی احتیاج دارند و در آخر وعده غذایی خود را دریافت میکنید.
API آنقدر ارزشمند است که بخش بزرگی از درآمد بسیاری از مشاغل را تشکیل میدهد. شرکتهای بزرگی مانند گوگل، eBay ،alesforce.com ،Amazon و Expedia از شرکتهایی هستند که از APIهای خود درآمد کسب میکنند.
ساده سازی عملکرد با استفاده از API
وقتی صحبت از نرمافزار میشود، API به معنای واقعی کلمه در همه جا وجود دارد. API با یکی از اساسیترین مفاهیم علوم رایانه یعنی انتزاع همراه است. انتزاع راهی برای ساماندهی پیچیدگی یک سیستم است تا به وسیله آن بتوانید اقدامات پیچیده را به روشی ساده اداره کنید. به عنوان مثال برنامه سایت آمازون دکمه هایی با نام Amazon Dash Button را طراحی کرده است که میتوانید از آنها برای سفارشهای کم ارزش و روزمره خود استفاده کنید. به عنوان مثال دکمههایی برای خرید دستمال کاغذی و سایر محصولات را می توانید به راحتی و با فشردن یک دکمه مشابه دکمههای زیر با پست رایگان در منزل دریافت کنید:
این دکمهها از طریق API عمل میکنند، به این صورت که شما با فشردن یک دکمه در برنامهای در تلفن هوشمند خود در آمازون سفارش ثبت میکنید. به این صورت که در حساب آمازون و یک محصول را به عنوان مارک مورد علاقه خود برای خرید انتخاب میکنید. سپس از طریق رابط برنامه نویسی کاربردی در پشت صحنه ارتباطات لازم جهت گذراندن پروسه ثبت سفارش به صورت خودکار انجام می شود و هر زمان که میخواهید میتوانید با فشردن دکمه تعداد بیشتری سفارش دهید.
این دکمه مثال بارز انتزاع است که به صورت یک رابط ساده انواع پیچیدگی را در پشت صحنه پنهان میکند. پیچیدگیهایی مانند شناسه محصولی که سفارش دادهاید، نحوه دریافت اطلاعات از پایگاه داده و گامهای خرید و ثبت سفارش. حال تصور کنید که مجبور بودید همه این موارد را به عنوان مشتری و به صورت اینترنتی انجام دهید. قطعا برای خرید چند بسته دستمال کاغذی هرگز ثبت سفارش به صورت طولانی و وقت گیر با پیچیدگیهای پشت صحنه را انجام نمیدادید اما با طراحی یک API ساده تنها چیزی که باید در مورد آن فکر کنید این است که یک دکمه را فشار دهید.
این چیزی است که APIها برای برنامه نویسان و کاربران به ارمغان میآورد. مخفی سازی پیچیدگی و تعامل نسبتاً ساده که میتوانید به جای انجام همه کارها از آن استفاده کنید.
پیشرفت و توسعه عملکرد در API
رابطهای برنامه نویسی به دلیل استقبال و نیاز جامعه امروزی پیشرفت زیادی داشتهاند و ارتباط آنها با بخشهای مختلف شکل پیشرفتهتری به خود گرفته است. اخیرا API مدرن برخی ویژگی ها را به کار گرفته است که آنها را بسیار ارزشمندتر و مفیدتر میسازد:
- APIهای مدرن مطابق با استانداردها (به طور معمول HTTP و REST) سازگار با توسعه دهنده بوده و به راحتی در دسترس و قابل درک هستند.
- این رابطها برای مخاطبان خاص مانند توسعه دهندگان تلفن همراه طراحی و مستند سازی شدهاند و همچنین به گونهای نسخه سازی شدهاند که کاربران میتوانند انتظارات خاصی از نگهداری و چرخه عمر آن داشته باشند.
- رابطهای برنامه نویسی کاربردیی پیشرفته بسیار استانداردتر هستند. این APIها نظم و انضباط بسیار قویتری برای امنیت، مدیریت و همچنین نظارت برای عملکرد و مقیاس خود دارند.
- مانند هر مولفه نرم افزاری دیگر که تا کنون تولید شدهاند، API مدرن نیز دارای چرخه توسعه نرم افزار (SDLC) مختص خود هستند که برای طراحی، آزمایش، ساخت، مدیریت و نسخه سازی است.
رابط برنامهنویسی کاربردی عمومی و ادغام APIها
API یک مفهوم دیرینه در برنامه نویسی رایانه است و سالها بخشی از ابزارهای برنامه نویسان بوده است. به طور سنتی، از APIها برای اتصال اجزای کد در حال اجرا در همان سیستم استفاده میشد.
اما با ظهور شبکههای اینترنتی، APIهای عمومی که گاهی به آن APIهای باز گفته میشود در دسترس قرار گرفت. APIهای عمومی از طریق اینترنت در همه جا در دسترس هستند و به توسعه دهنگان این امکان را میدهند کدی را بنویسند که با کد سایر سیستمها ارتباط برقرار کند. این فرآیند به عنوان ادغام API شناخته میشود.
این نوع ادغام کردن کد به کاربران امکان میدهد عملکرد و سرویسهای سیستمهای مختلف را با یکدیگر مخلوط و مطابقت دهند. به عنوان مثال، اگر از نرمافزار اتوماسیون بازاریابی Marketo استفاده میکنید، میتوانید دادههای خود را با عملکرد Salesforce CRM همگامسازی کنید.
رابط برنامهنویسی کاربردی REST
سرویسهای وب در ابتدا برای برقراری ارتباط با استفاده از SOAP (پروتکل دسترسی ساده به شی)، یک پروتکل پیام رسانی که اسناد XML را از طریق HTTP ارسال میکند، انجام شود. اما امروزه بیشتر APIهای مبتنی بر وب از REST به عنوان یک سبک معماری استفاده میکنند.
REST به طور رسمی توسط Roy Fielding در پایان نامه دکترای خود در سال ۲۰۰۰ معرفی شد که مجموعهای از مؤلفههای معماری، اصول طراحی و تعامل مورد استفاده برای ساخت سیستمهای توزیع شده است. این سبک شامل هر نوع رسانه (متن، ویدئو، و غیره) است. در واقع REST سبکی از سیستمهای معماری است که امکان ایجاد ارتباطات انعطاف پذیر و نمایش اطلاعات در وب را فراهم میکند و در عین حال امکان تنظیم ساختار لازم را برای رسیدن به اهداف عمومی فراهم میکند.
در یک API REST، یک منبع میتواند تقریباً هر چیزی باشد، اما نمونهها شامل یک کاربر، لیستی از توییتها و نتایج فعلی یک جستجوی توییت است. هر یک از این منابع در یک شناسه منبع قابل دسترسی هستند، که در مورد APIهای REST مبتنی بر وب معمولاً URL است، مانند:
https://api.twitter.com/1.1/users/show?screen_name=twitterdev
هنگامی که یک برنامه با استفاده از شناسه از منبعی درخواست میکند، API نمایه فعلی آن منبع را با فرمی که برنامه میتواند از آن استفاده کند، مانند تصویر JPEG، صفحه HTML یا JSON، به برنامه ارائه میدهد.
یکی از تمایز دهندههای بزرگ REST این است که با ایجاد انعطاف پذیری بیشتر به برنامه اجازه میدهد هر کاری را که میخواهد با داده انجام دهد تا کارآیی مورد نظر حاصل شود. البته باید گفت که ارسال دادهها از طریق وب برای پردازش در مقایسه با پردازش در جایی که داده در آن قرار دارد و سپس ارسال نتایج بسیار کند است.
چرا به رابط برنامهنویسی کاربردی نیاز داریم؟
به دلیل نیاز به هماهنگ سازی و دسترسی آسان بیشتر شرکتها، سرویسها و برنامههای مختلف به رابط برنامه نویسی کاربردی یا همان API رو میآورند. بدون API چرخه عملکرد بسیاری از سرویسها از کار میافتد یا حداقل ناقص عمل میکند. به عنوان مثال در اتصال به درگاههای پرداخت اگر APIها وجود نداشتند عملا فروشگاههای اینترنتی رونق خود را از دست میدادند.
به همین دلیل و به دلیل نیاز به اشتراک گذاری مقدار زیادی از دادهها در بخشهای مختلف و با افراد و سیستمها متفاوت موضوع API ارائه و مورد توجه عموم قرار گرفت. API در ابتداییترین اقدام خود به عنوان یک درب یا پنجره به یک سرویس یا همان برنامه نرمافزاری عمل میکند و به سایر برنامهها اجازه میدهد تا بدون نیاز به یک توسعه دهنده برای به اشتراک گذاشتن کل کد خود با آن ارتباط برقرار کنند.
به دلیل وجود APIهایی نظیر توئیتر، فیسبوک، تلگرام و نظیر اینهاست که کاربران به راحتی و بدون دردسر از طریق تلفن همراه خود و هزاران بخش دیگر به دادههای خود دسترسی دارند و میتوانند آنها را ویرایش، ایجاد و یا حذف کنند.
نمونههایی از API
بسیاری از APIهای عمومی وجود دارد که میتوانید با آنها ارتباط برقرار کنید. توانایی دسترسی به کد برخی از شرکتهای بزرگ مانند توئیتر از طریق API چیزی است که اساساً آنها را به یک سیستم عامل تبدیل میکند. برخی از نمونههای برجسته API عبارتند از:
- Google API که به شما امکان میدهد کدهای خود را به کل خدمات Google ارسال کنید و از رابط برنامه نویسی کاربردی سرویسهایی مانند Maps و Translate استفاده کنید. این موضوع آنقدر برای گوگل مهم است که Apigee، یک پلتفرم مدیریتی برتر API را تولید و ارائه کردهاند.
- APIهای Facebook که به شما امکان میدهد از طریق برنامه نویسی به نمودارهای اجتماعی و ابزارهای بازاریابی Facebook دسترسی پیدا کنید.
برای درک دقیق نحوه عملکرد API بهتر است موارد دیگری را نیز مانند رابطهای دیگر مانند توئیتر را نیز مورد بررسی قرار دهیم.
API توییتر
توییتر API یک API JSON مبتنی بر وب است که به توسعه دهندگان اجازه میدهد تا از طریق برنامه نویسی با دادههای توییتر ارتباط برقرار کنند. API توئیتر مبتنی بر وب است و باید از طریق ارسال درخواست اینترنتی به خدماتی که توییتر میزبان آن است، دسترسی پیدا کرد.
با یک API مبتنی بر وب مانند توئیتر درخواست شما را درست مانند مرورگر وب به وسیله HTTP ارسال میکند. اما به جای پاسخی که به عنوان یک صفحه وب ارائه میشود به فرمی برگردانده میشود که برنامهها میتوانند به راحتی آن را تجزیه و تحلیل کنند. قالبهای مختلفی برای این منظور وجود دارد و توییتر از یک فرمت محبوب و کاربردی آسان به نام JSON استفاده میکند.
به عنوان مثال یکی از عناصر اصلی توئیتر، توئیت است. API توییتر به شما میگوید چه کاری میتوانید با توئیتها انجام دهید: جستجوی توئیت، ایجاد توئیت یا ایجاد توئیت مورد علاقه. همچنین به شما میگوید که چگونه این اقدامات را انجام دهید. مثلا برای جستجوی توئیت، باید معیارهای جستجوی خود را مشخص کنید به عنوان مثال اصطلاحات یا هشتگهایی و یا منطقه جغرافیایی، زبان و غیره.
منبع: InfoWorld