وبلاگ
API چیست؟ آشنایی با رابط برنامهنویسی اپلیکیشن
وقتی دو انسان، با زبانهای مختلف با هم برخورد میکنند، معمولا برای برقراری ارتبط با یکدیگر، به دنبال کلمات و نشانههای مشترکی میگردند. این نشانههای مشترک را هر دو طرف درک میکنند و میتوانند به وسیلهی آن با هم ارتباط برقرار کنند. برنامههای کامپیوتری هم با استفاده از زبانهای برنامهنویسی مختلفی توسعه یافتهاند. اما برخی اوقات نیاز است که دو کامپیوتر، یا دو برنامهی کامپیوتری برای تبادل داده، با یکدیگر ارتباط داشته باشند. در چنین شرایطی، برای برقراری ارتباط بین دو نرمافزار یا رایانه، از رابط برنامهنویسی اپلیکیشن، یا API (Application Programming Interface) استفاده میشود. در ادامه، با ویژگیها و کاربرد API بیشتر آشنا میشویم.
کاربرد API چیست؟
کار اصلی API، انتقال درخواست از یک سیستم به یک سیستم دیگر، و انتقال پاسخ است. برای مثال فرض کنید به یک رستوران رفتهاید. یک منو جلوی شما است که لیست غذاها (سرویسهای) رستوران روی آن نوشته شده است. در پشت رستوران هم یک آشپزخانه وجود دارد که فراهمکنندهی این سرویس است (Service Provider). شما درخواست خود را از منو انتخاب میکنید. کسی که درخواست شما را به آشپزخانه منتقل میکند، و در جواب این درخواست، غذای مورد نظر را برای شما سرو میکند، گارسون است. API هم در رابطهی بین دو برنامه، نقشی مانند این گارسون دارد.
اما کاربرد API را در یک مثال از دنیای برنامهنویسی بررسی میکنیم. فرض کنید شما برای خرید بلیط هواپیما، به وبسایت یک ایرلاین مراجعه کردهاید. تاریخ حرکت و تعداد و نوع صندلیها را مشخص میکنید و از ایرلاین، بلیط مورد نظر را خریداری میکنید. اما فرض کنید برای خرید بلیط، به طور مستقیم به ایرلاین مراجعه نکنید. بلکه برای مشاهدهی بلیطهای بیشتر، از وبسایت آژانسهای مسافرتی یا پلتفرمهای خرید بلیط استفاده کنید. وبسایت این شرکتها، باید اطلاعات مورد نظر را از چندین ایرلاین دریافت کند و به صورت یکجا به شما نمایش دهد. وبسایت مد نظر، برای انجام این کار، از ایرلاینهای مختلف API دریافت میکند.
یک API چگونه کار میکند؟
رابط برنامهنویسی اپلیکیشن، از دو بخش تشکیل شده است:
مشخصات فنی که دادههای مجاز برای تبادل را مشخص میکند. این مشخصات، با استفاده از پروتکلهای درخواست و ارسال داده تعیین میشوند.
رابط نرمافزاری که بر اساس مشخصات فنی نوشته شده است.
یک API، در واقع مانند یک دیکشنری با کلمات مشترک بین دو نرمافزار است. این دیکشنری، هم کلمات مجاز برای برقراری ارتباط بین این دو نرمافزار را تعیین میکند. هم معنی و نوع استفاده از هر کلمه را مشخص مینماید. برنامهای که نیاز به اطلاعات یا عملکرد خاصی از برنامهی دوم دارد، API آن را صدا میزند. سپس برنامهی دوم این اطلاعات یا عملکردها را به برنامهی اول، باز میگرداند.
** پیشنهاد دوره : دوره جاوا اسکریپت
انواع API
رابطهای برنامهنویسی اپلیکیشن را میتوان بر اساس فاکتورهای مختلفی بررسی کرد. در ادامه، با دو نوع رایج دستهبندی APIها آشنا میشویم.
انواع API بر اساس دسترسی یا نوع انتشار
با توجه به نوع دسترسی، APIها را میتوان به سه دستهی زیر تقسیم کرد:
- خصوصی (Private)
اشتراکی (Partner)
عمومی یا خارجی (Public/ External)
در ادامه، به طور مختصر هر کدام را بررسی میکنیم.
APIهای خصوصی
این APIها معمولا برای استفادهی درونسازمانی توسعه پیدا میکنند. دسترسی به این APIها نیز معمولا محدود به کارمندان خود شرکت است. کاربرد این APIها، در یکپارچهسازی سیستمهای سازمانی یا توسعهی یک نرمافزار با استفاده از منابع موجود است.
APIهای اشتراکی
این APIها، کاربران خارجی دارند، اما تعداد این کاربران محدود است. APIها اشتراکی، معمولا با همکاری دو طرف خاص توسعه پیدا میکند. کاربرد اصلی این APIها هم در یکپارچهسازی سیستمهای سازمانی یا محصول دو شرکت خاص است. برای مثال، همکاری اسنپ و آپ را در نظر بگیرید. این دو شرکت برای یکپارچهسازی اپلیکیشنهای خود، از API اشتراکی استفاده میکنند.
APIهای عمومی
این APIها، برای استفادهی عمومی آزاد هستند. هر برنامهنویسی که درخواست استفاده از این APIها را داشته باشد، در اختیار وی قرار داده میشود. APIها عمومی میتواند رایگان یا پولی باشد. اما به جز این، شرط دیگری برای استفاده از آنها وجود ندارد.
انواع API بر اساس نوع کاربرد
رابطهای برنامهنویسی اپلیکیشن را میتوان بر اساس سیستمی که برای آن توسعه یافتهاند نیز دستهبندی کرد.
APIهای دیتابیس
این APIها، برقراری ارتباط بین یک دیتابیس و یک اپلیکیشن را تسهیل میکند. توسعهدهندگان با استفاده از این APIها میتوانند اطلاعات را از یک دیتابیس دیگر دریافت و یا حتی دستکار کنند.
APIهای سیستم عامل
این گروه از APIها، منابع مورد نیاز برای اجرای برنامه در سیستمهای عامل را قراهم میکند. ویندوز، لینوکس و اپل، هر کدام دارای APIهای سیستم عامل مخصوص خود هستند.
APIهای ریموت
این APIها، استاندارد برقراری ارتباط را بین دو اپلیکیشن که در دو دستگاه مختلف اجرا میشوند، مشخص میکند. به بیان دیگر، یک برنامه، که در یک دستگاه اجرا میشود، از یک برنامه که در دستگاهی دیگر اجرا میشود، اطلاعات درخواست میکند.
APIهای وب
این APIها که رایجترین نوع هستند، اطلاعات را از سرور، به دستگاه کاربر منتقل میکنند. وظیفهی این APIها، انتقال درخواست از وباپلیکیشن به سرور، و انتقال پاسخ از سرور، از طریق پروتکل انتقال فرامتنی (HTTP) میباشد.
مزایای استفاده از API
شاید مهمترین مزیت استفاده از APIها در برنامهنویسی، امکان یکپارچگی باشد. با استفاده از این قابلیت میتوان دادهها را از نقاط مختلف تجمیع، و در یک مکان واحد از آنها استفاده کرد. در ادامه، برخی دیگر از مزایای APIها را بررسی میکنیم.
کاهش حجم کدنویسی
سرعت بارگذاری وبسایت یا اپلیکیشن، امروزه تبدیل به یکی از مهمترین فاکتورهای تجربه کاربری شده است. تکنولوژیهای زیادی در برنامهنویسی برای رسیدن به این هدف توسعه یافته است. AMP یکی از این تکنولوژیها است (برای آشنایی با این تکنولوژی، میتوانید مقالهی «AMP چیست؟» را مطالعه کنید). استفاده از APIها، میتواند تا حد قابل توجهی حجم کدنویسی مورد نیاز را کاهش دهد که تاثیر زیادی در افزایش سرعت بارگذاری خواهد داشت.
افزایش سرعت برنامهنویسی
به خصوص برای افرادی که به صورت فریلنس کار میکنند، افزایش سرعت انجام کارها، یک چالش است (برای آشنایی با این نوع کاری، میتوانید به مقالهی «فریلنسری چیست؟» مراجعه کنید). استفاده از API، باعث میشود تا با کوتاهترین کد، به بیشترین اطلاعات دسترسی پیدا کرد. از این رو است که توانایی کار با APIها، یکی از مهارتهای مورد نیاز برنامهنویس فرانت محسوب میشود. چرا که میتواند با استفاده از این قابلیت، وبسایتهایی با امکانات بیشتر، در زمانی کوتاهتر توسعه دهد.
امکان ادغام چند محصول مجازی
استفاده از اپلیکیشنهای All-in-one، طرفداران زیادی دارد. این اپلیکیشنها، معمولا تلفیقی از چند برنامهی کاربردی مختلف هستند. توسعهی چنین اپلیکیشنهایی، بدون استفاده از API تقریبا غیر ممکن است. چرا که هر کدام از آنها با زبان و استانداردهای مشخصی توسعه یافتهاند و یکپارچگی آنها، بدون استفاده از API، به شدت پیچیده خواهد بود.