API مخفف چیست؟ API مخفف واژگان Application Programming Interface به معنی «رابط های برنامه نویسی اپلیکیشن» می باشد. اما واقعا API چیست؟ ما در این مطلب به توضیح این موضوع خواهیم پرداخت.

این کلمه توجه خاصی به رابط یا Interface دارد. اگر شما هر گونه تجربه ای در برنامه نویسی داشته باشید، همه معانی و مخفف ها با شنیدن کلمه Interface به ذهنتان می آید؛ اما ما بیشتر علاقمند به دانستن معنی کلاسیک و معمولی آن هستیم.

یک رابط (Interface) یک مرز مشترک بین دو سیستم و سرویس جدا است. از جمله می توان این موضوع را برداشت کرد که بین این دو سیستم ارتباط برقرار است.

APIها امروزه دنیای مدرن وب را تحت تاثیر خود قرار داده‌اند. اکنون شما براحتی می‌توانید با استفاده از اپلیکیشن‌های تلفن همراه، وارد حساب ایمیل خود شوید و یا بدون استفاده از سایت‌های شبکه‌های اجتماعی و فقط با یک کلاینت وارد حساب کاربری خود شده و فعالیت داشته باشید. همه‌ی این‌ها به واسطه‌ی وجود APIها امکان‌پذیر شده است.

به طور خلاصه، ای پی آی به راحتی این امکان را در اختیار یک برنامه نویس می‌دهد تا به‌ برخی یا تمامی قابلیت‌های یک نرم‌افزار دیگر دسترسی پیدا کند. به طور مثال، فرض کنیم نرم‌افزاری تحت عنوان الف وجود دارد که شرکت توسعه‌دهنده اش، این امکان را برای سایر توسعه دهندگان فراهم آورده تا از API آن استفاده کنند. نرم افزاری را هم که توسعه می‌دهیم نرم‌افزار ب نام دارد. حال نرم‌افزار الف در چارچوب خاصی به نرم‌افزار ب اجازه می‌دهد تا از اطلاعات آن استفاده کند. در استفاده از API می بایست موارد زیر را حتماً مد نظر قرار داد:

– APIها ارائه دهنده ی داده‌ها ساختار یافته هستند. به عبارت دیگر، درخواست از طرف نرم‌افزار ب به نرم‌افزار الف در چارچوب یک فرمت استاندارد صورت می گیرد.

– APIها قابل پیش‌بینی هستند. به عبارت دیگر، درخواست هایی که به نرم‌افزار الف ارسال می‌شوند از پیش تعیین شده بوده لذا پاسخ به چنین درخواست هایی همواره مشخص و قابل پیش‌بینی خواهند بود.

– APIها مستند هستند. با توجه به این که APIها توسط شرکت های بزرگ برای سرویس های جهانی ایجاد می شوند، این APIها می بایست صد در صد مستند بوده تا توسعه دهندگانی که قصد استفاده از آن‌ها را دارند، در استفاده از آن‌ها دچار حداقل سردرگمی شوند و به راحتی از جزئیات API سر در بیاروند.

– APIها دارای یک API Key هستند. برای آن که به راحتی مشخص شود که Request یا «درخواست» از طرف چه سایت یا نرم افزاری است، ای پی آی ها یکی API Key یا «شناسه ی ای پی آی» در اختیار توسعه دهندگان قرار می‌دهند که در هر درخواست، این شناسه هم برای شرکت الف ارسال می‌شود که آن طریق، ماهیت اپلیکیشن شما برای آن سیستم مشخص شده و بر اساس توافقاتی که برای استفاده از ای پی آی صورت گرفته، خدمات را در اختیار شما قرار می دهد. علاوه بر این، شناسه ای که در اختیار شما -به عنوان یک توسعه‌دهنده- قرار می گیرد، مشخص می‌کند که شما هر چند وقت یک بار خواهید توانست برای نرم‌افزار الف درخواست ارسال کنید. به طور مثال، این API ممکن است که صرفاً در بازه های زمانی نیم ساعته به درخواست ها پاسخ گوید و در صورتی که اپلیکیشنی هر ده دقیقه یک بار، یک درخواست ارسال کند، API Key مشخص کننده ارسال کننده ی درخواست بوده و درخواست شما اصطلاحاً Ignore شده یا «نادیده» گرفته می شود.

API های تحت وب

در قسمت وب نیز APIها امکان استفاده از داده‌ها و عملکرد سرویس‌های بزرگی مثل گوگل یا فیسبوک را به امکانات اپلیکیشن‌ها یا وبسایت‌های مختلف اضافه می‌کنند. برای مثال سرویس« Yelp»، بانک اطلاعاتی عظیمی شامل آدرس رستوران‌ها و مراکز خرید و حتی میزان محبوبیت آن‌ها در اختیار دارد. مسلما طراحی و پیاده‌سازی نقشه‌ای اختصاصی برای این سایت امری وقت‌گیر و مشکل خواهد بود، اما با استفاده ازAPIها ، نقشه‌های‌ Google Maps (همین‌طور سرویس نقشه‌ی اپل) به امکانات این سایت اضافه شده است و در نهایت با ترکیب عملکرد این دو سرویس، سرویسی بهبود یافته دراختیار کاربران Yelp قرار می‌گیرد. دربرخی بازی‌های ویدئویی نیز، استفاده از سرویس‌های فیسبوک مانند چت، ثبت امتیازهای برتر و دعوت از دوستان توسط APIها امکان‌پذیر شده است.

رابط کاربری برنامه نویسی

اما چگونه ارتباط بین این نرم‌افزارها یا سرویس‌ها ایجاد می‌شود؟ در واقع APIها با نمایان ساختن بخشی از عملکرد و اطلاعات نهفته موجود در برنامه‌ها، تعامل آن‌ها با محیط خارج را ممکن می‌کنند. البته این آشکارسازی بصورت امن و با محدودسازی دسترسی دیگر برنامه‌های خارجی صورت می‌پذیرد. این شیوه امکان اشتراک‌گذاری داده‌ها بین برنامه‌های مختلف را فراهم کرده و بدون نیاز به توسعه‌دهندگان (به منظور اشتراک‌گذاری کدهای این برنامه‌ها)، تعامل بین نرم‌افزارها نیز امکان‌پذیر می‌شود. اشتراک‌گذاری کدها در این مقیاس علاوه بر اتلاف وقت و ناکارآمد بودن، برای برنامه‌نویس‌هایی که تمایل به محرمانه نگه داشتن کدها دارند نیز خوشایند نخواهد بود. این شرایط حتی برای برنامه‌های متن باز نیز صادق است; جستجوی دستورات خاص از بین تمام کدهای یک اپلیکیشن، بسیار زمان‌بر خواهد بود. خوشبختانه APIها دسترسی برنامه‌های خارجی به برخی مشخصه‌های خاص را محدود می‌کنند و با تعریف شیوه‌ی تعامل سرویس‌ها یا نرم‌افزارها با یکدیگر، امکان ایجاد یک ارتباط امن و سودمند را مهیا می‌کنند.

در حال حاضر APIها جایگاه بسیار مهمی در ارتباطات دارند، برنامه‌نویس‌ها در چارچوب این پروتکل‌ها، بهره‌وری از شبکه‌های اجتماعی نظیر فیسبوک و یا خدماتی مانند google maps یا حتی سرویس‌های ذخیره‌سازی ابری مانند dropbox را ممکن ساخته‌اند. برای مثال توسعه‌دهندگان اپلیکیشن‌های بازی، APIهای همگام‌سازی را در اختیار کاربر قرار می‌دهند. با استفاده ازهمگام سازی، امکان ذخیره‌سازی جایگاهتان در بازی را در فضای ابری خواهید داشت و بدین ترتیب می‌توانید با استفاده از دستگاه‌های دیگر نیز ادامه‌ی بازی را از همان نقطه از سر بگیرید.

طراحی API

APIها برای تجارت هایی که بر پایه ی اطلاعات و داده ها فعالیت می کنند، بسیار مفید بوده و حتی توصیه می شوند! فرض کنید که شرکت شما دارای اطلاعات آماری و حقوقی زیادی است و می خواهید نتایج چند ساله ی خود را با شرکا به اشتراک بگذارد. در این مواقع با آرشیو کردن اطلاعات در یک دیتابیس و ارائه ی API آن به همکاران خود، می توانید به راحتی به آن ها اجازه ی دسترسی به اطلاعات و استفاده از آن ها را بدهید. از APIها می توان در کمپانی های تولید سخت افزار نیز استفاده های فراوانی کرد؛ در حقیقت استفاده از APIها در چنین کمپانی هایی روز به روز در حال افزایش است. با وجود آن که نرم افزارها بر روی نحوه ی عملکرد سخت افزارها نظارت دارند، ایجاد امکان دسترسی به سخت افزار از طریق API به معنای بهبود عملکرد و افزایش طول عمر آن دیوایس ها خواهد بود.

اگر شما در حوزه ی کاری خود اولین کسی باشید که API مربوط به اطلاعات و داده ها را در اختیار دیگران می گذارد، پس قدرت و امکان اعمال آن APIها در محصولات رقبا را دارید. بدین ترتیب، آن ها مجبور به همکاری با شما خواهند بود. در برخی مواقع، اگر به کاربران خود این امکان را بدهید که با APIهای شما ابزار مخصوص خود را بسازند، با ابزارها و راهکارهایی آشنا خواهید شد که اگر خودتان قصد ساخت آنان را می داشتید، به دلیل عدم وجود زمان و یا خلاقیت، هرگز به آن ها دست نمی یافتید!

هر دو نکته ی بالا به شما این امکان را می دهند که با کمترین تلاش و سرمایه گذاری، به نفوذ بسیار بالایی در بازار دست پیدا کنید چرا که اگر از زیرساخت قدرتمند و APIهایی جامع برای استفاده از آن زیرساخت برخوردار باشید، دیگران به صورت خودکار به شما محتاج خواهند شد.

سیاست های انتشار API

اگر همه چیز به درستی و با دقت پیش برود، APIها خطری امنیتی برای شما محسوب نمی شوند. اما هرچه راه های ارتباطی با نرم افزار خود را بیشتر کنید، راه های نفوذ به آن نیز افزایش می یابد و از آنجایی که APIها به برخی از امکانات نرم افزار دسترسی می دهند، در صورت استفاده ی نادرست و بسته به کاربردشان، می توانند خسارت های زیادی به بار آورند.

برای حل این قبیل مشکلات چندین راه حل وجود دارد: دسترسی به API را توسط یک سیستم شناسایی کاربر قدرتمند حفاظت کنید، حتی اگر آن API را به رایگان ارائه می کنید. سعی کنید سرویس API خود را بر روی سروری جداگانه و متفاوت از دیتابیسی که به آن متصل می شود، راه اندازی کنید. اگر به کاربران خود امکان اضافه کردن و یا ویرایش اطلاعات را نیز می دهید، خود را برای مقابله با حملات Injection آماده کنید. یکی دیگر از حملات سایبری خطرناک Denial of Service یا DOS نام دارد که نیاز دارید تا راهکارهای حفاظتی برای مقابله با این حملات را نیز رعایت کنید.

چه بخواهید API خود را توسعه دهید و چه از سرویسی استفاده کنید که آن را برایتان بسازد، باید بدانید که طراحی و مدیریت APIها بر اساس استانداردهایی پیش می رود که باید آن ها را رعایت نمود. این استانداردها به گونه ای وضع شده اند که برای کسانی که از API استفاده می کنند، آسان و قابل فهم باشند و تا حد ممکن از بروز نکات منفی ذکر شده جلوگیری می کنند.

 

 

 

 

کلیدواژه ها :

این خبر را به اشتراک بگذارید :