API چیست؟


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

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

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

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

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

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

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

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

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

حال این سوال پیش می آید که اگر کمپانی و تجارت شما عمدتاً به صورت آنلاین مدیریت می شود و یا مربوط به سرویس های مردمی و شهری است، آیا باید از 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 استفاده می کنند، آسان و قابل فهم باشند و تا حد ممکن از بروز نکات منفی ذکر شده جلوگیری می کنند.

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
واسه مبتدی مث من سخته از تو نظرات تونستم بفهمم چیه
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
تو سایت های رزورواسیون همه از api استفاده شده که داده های یه سایتو تو سایت دیگه نشون میده و در فرمت xml هستند مثل سایتهای رزرو بیلط و هتل
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
سلام ممنون از مطالب مفیدتون
ببخشید API ارتباطی با معماری سرویس گرا برای سیستم های توزیعی ندارند ؟
بنظر کارشون مشابه !
کاربر میهمان
کاربر میهمانمن یک کاربر مهمان هستم
خيلي عالي بود ، ميشه منابعي در مورد طراحي api معرفي كنيد ؟
کاربر میهمان
kingمن یک کاربر مهمان هستم
bale amirhoseein doroste
ya robat haye telegram
امیرحسین
امیرحسین
مثل نرم افزار های موبایلی فالووربگیر یا لایک بگیر اینستاگران که کاربر در سیستم اینستاگرام لاگین میشه و از خدمات این برنامه ها استفاده میکنه؟؟؟؟
درست گفتم؟
رضا بختیاری
رضا بختیاری
خيلي سخت بود سكان اكادمي
جناب سرهنگ
جناب سرهنگ
بعضی از نرم افزار ها هستند که به جای ثبت نام کردن در اون ها می تونیم با حساب فیسبوک یا گوگل پلاس خودمون وارد اون نرم افزار بشیم این قابلیت همون استفاده از api های فیسبوک یا گوگل پلاس هستش .. درسته ؟؟؟؟
vahid
vahid
این بحث برای مبتدی ها یه کم سنگینه! مث من!
امیر
امیر
سلام
میشه برای فهم بهتر یک مثال کاربردی از سایتی که خدمات API در ایران میدهد نام ببرید
متشکرم