APIها (Application Programming Interface) یا رابط برنامهنویسی اپلیکیشن، پیشخدمتهای حرفهای دنیای دیجیتال هستند که امکان برقراری ارتباط میان دو اپلیکیشن را فراهم مینمایند. APIها را میتوان از جنبههای مختلف مورد بررسی قرار داد و براساس این بررسیها، انواع مختلفی از آنها را شناسایی نمود. در این مقاله به دنبال آن هستیم تا از جنبههای مختلف APIها را بررسی و انواع آنها را معرفی نماییم.
به طور کلی، APIها را از سه جنبه میتوان مورد بررسی قرار داد:
- سیاستهای انتشار
- موارد استفاده
- پروتکلها/معماری
که میتوانید در تصویر زیر این تقسیمبندی را به صورت موردی مشاهده کنید و در ادامه توضیحات آنها را مطالعه نمایید.
انواع APIها از لحاظ سیاستهای انتشار
APIها را از لحاظ سیاستهای انتشار میتوان در سه دسته خصوصی (Private)، شراکتی (Partner) و عمومی (Public) قرار داد.
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ها را پیش از خرید، ارزیابی نمایند.
انواع APIها از لحاظ موارد استفاده
APIها را میتوان بر اساس نوع سیستمهایی که APIها برای آنها ساخته میشوند، دستهبندی نمود.
APIهای پایگاه داده
APIهای پایگاه داده، ارتباط میان یک اپلیکیشن و یک سیستم مدیریت پایگاه داده را برقرار مینمایند. توسعهدهندگان به وسیله نوشتن کوئریهایی برای دسترسی به دادهها، تغییر جداول و سایر اقدامات مشابه، با پایگاههای داده کار میکنند. برای مثال، API پایگاه داده The Drupal، به کاربران این امکان را میدهد تا کوئریهای یکتا و واحدی را برای پایگاههای داده متفاوت، بنویسند.
مثال دیگر، API پایگاه داده ORDS است که درون Oracle REST Data Services، تعبیه شده است.
APIهای سیستمعامل
این گروه از APIها، نحوه استفاده اپلیکیشنها از منابع و خدمات سیستمعاملها را تعریف مینمایند. هر سیستمعاملی، مجموعه API خاص خود را دارد (برای مثال، APIهای ویندوز یا APIهای لینوکس).
اپل نیز APIهایی را برای سیستمعاملها macOS و iOS عرضه کرده است. این APIها را میتوان در محیط Cocoa بررسی نمود.
APIهای ریموت
این APIها، استانداردهایی را برای تعامل اپلیکیشنهایی که بر روی دستگاههای متفاوت راهاندازی شدهاند، تعریف میکنند. به بیان دیگر، یکی از اپلیکیشنها، به منابعی که خارج از دستگاهی که بر روی آن قرار دارد، دسترسی پیدا میکند. از آنجایی که دو اپلیکیشن از طریق یک شبکه ارتباطی (معمولاً اینترنت)، با یکدیگر در ارتباط هستند، بیشتر APIهای ریموت، مبتنی بر استانداردهای وب، نوشته شدهاند. Java Database Connectivity API و Java Remote Method Invocation API، دو نمونه از APIهای ریموت هستند.
APIهای تحت وب
این نوع از APIها، متداولترین نوع API، هستند. APIهای تحت وب، دادههای قابل خوانش توسط ماشین و امکان انتقال آنها میان سیستمهای تحت وب را فراهم میکنند. این APIها، معمولاً درخواستهای اپلیکیشنهای تحت وب را به سرورها و پاسخ سرورها به اپلیکیشنها را با استفاده از پروتکل HTTP، انتقال میدهند.
توسعهدهندگان میتوانند از این APIها، به منظور توسعه کارکردهای اپلیکیشنها و وبسایتهای خود استفاده نمایند. برای مثال، Pinterest API، ابزاری را برای اضافه کردن دادههای موجود در صفحه Pinterest کاربران به یک وبسایت، ارائه میدهد. یا Google Maps API، امکان اضافه کردن نقشه مکان شرکت به وبسایت را ارائه میدهد.
پروتکلهای API
هدف پروتکلهای API، استانداردسازی انتقال داده میان وبسرویسها است. در این حالت، استانداردسازی به معنی توانایی سیستمهای مختلف – که با زبانهای برنامهنویسی متفاوت نوشته شده و یا بر روی سیستمعاملهای متفاوت اجرا میشوند و یا مبتنی بر فناوریهای متفاوت هستند – در ارتباط بدون اختلال با یکدیگر میباشد.
Remote Procedure Call (RPC)
APIهای تحت وب ممکن است مبتنی بر اصول تبادل منابع برای اساس RPC باشند. این پروتکل، تعامل میان اپلیکیشنهای کلاینت/سرور را تعریف میکند. یک برنامه (کلاینت)، داده یا عملیاتی را از برنامه دیگر (سرور) که در رایانه دیگر در شبکه قرار دارد، درخواست میکند و سرور، پاسخ مرتبط با آن درخواست را برمیگرداند.
RPC، به عنوان فراخوانی یک سابروتین یا تابع نیز شناخته میشود. یکی از دو روش پیادهسازی RPC، SOAP است.
Service Object Access Protocol (SOAP)
SOAP، بر اساس تعریف که مایکروسافت (توسعهدهنده اصلی آن) ارائه نموده است؛ پروتکل سبکی (Lightweight Protocol) برای تبادل دادههای ساختاریافته در محیط غیرمتمرکز و پراکنده است. به طور کل، این پروتکل، شامل قوانین دستوری (Syntax Rules) برای پیامهای درخواست و پاسخ ارسال به وسیله دو اپلیکیشن تحت وب است. APIهایی که از قوانین SOAP پیروی میکنند، پیامرسانی XML را میان سیستمها از طریق HTTP یا SMTP امکانپذیر مینمایند.
XML، فرمت متنی ساده و بسیار منعطفی است که برای ذخیره و انتقال دادهها در بستر اینترنت یا سایر شبکهها استفاده میشود. XML، مجموعهای از قوانین را برای کدگذاری مستندات به شیوهای که هم برای انسانها و هم برای ماشینها خوانا باشد، تعریف مینماید.
SOAP، عمدتاً برای نرمافزارهای تحت وب شرکتهای بزرگ، به منظور تضمین امنیت بالای دادههای انتقالیافته استفاده میشود. APIهای SOAP، برای ارائهدهندگان خدمات درگاه پرداخت، مدیریت هویت، راهکارهای مدیریت ارتباط با مشتریان و خدمات مالی و ارتباطی مطلوب است.
Representational State Transfer (REST)
واژه REST، توسط یکی از دانشمندان حوزه رایانه با نام روی فیلدینگ (Roy Fielding) در سال 2000، معرفی شد. بر خلاف SOAP که یک پروتکل است، REST یک سبک معماری نرمافزار برای ساخت اپلیکیشنهایی است که بر پایه HTTP (معمولاً وبسرویسها) کار میکنند.
REST، گزینه آسانتری نسبت به SOAP در نظر گرفته میشود؛ زیرا SOAP به نظر بسیاری از برنامهنویسان، نیازمند نوشتن کدهای بسیاری برای تکمیل یک وظیفه و پیروی از ساختار XML، برای هر پیام ارسالی است. REST، از منطق دیگری پیروی میکند، زیرا دادههایی را به عنوان منابع، دردسترس قرار میدهد. هر منبع به وسیله یک URL منحصربهفرد نمایش داده میشود و میتوان با ارائه URL آن، دسترسی به آن منبع را درخواست داد.
به APIهای تحت وبی که از محدودیتهای ساختار REST، پیروی میکنند؛ RESTful APIs اطلاق میشود. این APIها از درخواستهای HTTP استفاده میکنند: GET، PUT، HEAD، POST، PATCH، CONNECT، TRACE، OPTIONS و DELETE.
RESTful API، پیامرسانی را با فرمتهای متفاوتی، مانند متن ساده، HTML، YAML، XML و JSON پشتیبانی میکند؛ در حالی که SOAP، فقط XML را پشتیبانی میکند. توانایی پشتیبانی از فرمتهای متنوع برای ذخیره و انتقال دادهها، یکی از دلایلی است که REST، در این روزها، گزینه محبوبتر و متداولتری برای ساخت APIهای عمومی است.
سخن پایانی
در این مقاله سعی شد تا جنبههای مختلفی که APIها مورد بررسی قرار میگیرند معرفی شده و انواع APIها با توجه به این جنبهها، ارائه شوند. شناخت و درک انواع APIها به شما کمک خواهد نمود تا بتوانید بهتر از آنها استفاده نمایید و با توجه به کارکرد هر یک و مزایا و معایب آنها، تصمیمات اثربخشتری را در خصوص استفاده از آنها اتخاذ نمایید.