رابط برنامه نویسی کاربردی (API) چیست؟

به‌راحتی و تنها با چند کلیک ساده

Application programming interface -رابط برنامه نویسی کاربردی -API

وجود یک واسط کاربر (UI) باعث شده که به‌راحتی به قسمت‌های مختلف یک نرم‌افزار دسترسی داشته باشیم. در حقیقت، UI رابطی است بین منطق پشت نرم‌افزار و کاربری که قصد استفاده از آن را دارد. اما آیا یک نرم‌افزار می‌تواند با استفاده از User Interface (UI) با یک نرم‌افزار دیگر ارتباط برقرار کند؟ از کلمه User می‌توان به این نتیجه رسید که: «خیر، چنین امکانی به صورت مستقیم موجود نیست».

اینجاست که “ای پی آی” یا رابط برنامه نویسی کاربردی پا به میدان می‌گذارد و این مشکل را حل می‌کند. در این مقاله قصد داریم که بیشتر با API ها آشنا بشویم و همچنین شما را با ای پی آی طراحی شده توسط بیگ پرو1 آشنا کنیم.

یک مثال ساده

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

رابط برنامه ‌نویسی کاربردی یا API چیست؟

API مخفف عبارت Application Programing Interface می‌باشد و به معنای رابط برنامه نویسی کاربردی است. البته گاهی بهتر است آن را «رابط برنامه نویسی نرم افزار» نیز خواند. API ها وظیفه برقراری ارتباط بین دو کد اجرایی در مکان‌های مختلف را دارند. به عبارت دیگر رابط برنامه نویسی کاربردی روشی برای صحبت کردن نرم‌افزار‌ها با یکدیگر است.

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

لایه های انتزاعی را به صورت ستونی در نظر بگیرید، به طوری که قسمت‌های بالای لایه انتزاعی به اجزای زیر آن وابسته‌اند. لایه انتزاعی باعث می‌شود که قوانینی وضع شود که بدون در نظر گرفتن جزئیات کارِ لایه‌های زیرین، کارها انجام شوند.

نمونه‌ای از یک لایه انتزاعی، لایه ISA (Instruction Set Architecture) در معماری‌کامپیوتر است که باعث می‌شود برنامه نویسان بدون در نظر گرفتن جزئیات پیاده‌سازی سخت‌افزاری، توسط زبان استفاده از اسمبلی مربوط به آن معماری، برنامه‌های خود را بنویسند و سخت‌افزار‌ها را مدیریت کنند.

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

احتمالاً تصور می‌کنید که API ها همیشه در وبسایت‌ها و برنامه‌های آنلاین استفاده می‌شوند؛ ولی این تفکر، یک تفکر اشتباه است. در ادامه این موضوع را بیش‌تر برسی می‌کنیم.

بدیهی است که برنامه‌هایی که از ای پی آی ها استفاده می‌کنند، می‌تواند چیزی غیر از یک نرم‌افزار مبتنی بر شبکه باشند.

* تصویر زیر یک دید سطح بالا از ای پی آی مبتنی بر وب را نشان می‌دهد:

رابط برنامه نویسی کاربردی- ای پی آی

همانظور که مشاهده ‌می‌کنید یک نرم‌افزار می‌تواند از طریق اینترنت به یک آی پی متصل شده و سرویس‌هایی را دریافت کند. کاملاً واضح است که ای پی آی نقش یک واسط را بین application و web server بازی می‌کند. حال به تصویر زیر نگاه کنید:

ای پی آی

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

 اگر این ای پی آی ها وجود نداشتند، برنامه‌نویس مجبور بود به صورت مستقیم با سطوح پایین سیستم ارتباط برقرار کند و این کار برای برنامه‌نویس‌های معمولی اصلاً ساده نیست.

در تصویر بالا Application را می‌توان یک سرویس‌گیرنده در نظر گرفت و سرویس‌دهنده می‌تواند یک درایور یا کرنل سیستم‌عامل باشد.

به‌ طور کلی رابط برنامه نویسی کاربردی یک واسط بین دو نرم‌افزار (سرویس‌گیرنده و سرویس‌دهنده) است که پروتکل‌هایی را برای برقراری ارتباط آن‌ها با یکدیگر تعیین می‌کند.‌

انواع API های وب

به طور کلی ای پی آی ها را می‌توان به از جنبه‌های مختلفی تقسیم‌بندی کرد. از جنبه دسترسی‌پذیری می‌توان ای پی آی ها را به 4 دسته تقسیم کرد که در زیر لیست شده‌اند:

1- API عمومی:

API عمومی می‌تواند در اختیار همه برنامه‌نویس‌ها و شرکت‌ها قرار بگیرد. شرکت‌ها طبق استراتژی تجاری خود این ای پی آی ها را ارائه می‌دهند. API عمومی می‌تواند شامل مرحله احراز هویت یا دارای هزینه برای استفاده باشد. 

2- API شراکتی:

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

3- API خصوصی:

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

4- API ترکیبی:

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

انواع API ها از نظر موارد استفاده

ای پی آی ها را می‌توان برای کار‌های مختلفی طراحی و پیاده‌سازی کرد. این کار‌ها فقط محدود به واکشی اطلاعات از دیتابیس‌ها نمی‌شود و می‌تواند در قسمت‌های دیگری نیز پیاده‌سازی شود. رایج‌ترین نمونه موارد استفاده از آن‌ها در زیر لیست شده‌اند:

1- API های موجود در سیستم‌عامل‌ها:

این رابط برنامه نویسی کاربردی، به نرم‌افزار‌های سیستم‌عامل‌ها اجازه می‌دهد که به منابع سیستم دسترسی امن و آسانی داشته باشند و نیازی به دسترسی مستقیم به SysCall ها نباشد. نمونه ای از این مورد، ای پی آی win32 در ویندوز است.

2- API های دیتابیس:

 اجازه می‌دهند که برنامه‌ها بتوانند با سرویس مدیریت دیتا‌بیس ارتباط برقرار کنند.

3- API های Remote:

ای پی آی های Remote روشی را تعریف می‌کنند که از طریق آن دو برنامه در ماشین‌های مختلف می توانند با هم ارتباط برقرار کرده و کدهایی را از راه دور اجرا کنند. به عبارت دیگر، یک نرم‌افزار در سیستم من می‌تواند به منابع سیستم شما دسترسی داشته باشد. از آنجایی که اکثر استاندارد های ای پی آی Remote ها از طریق شبکه‌ها، به ویژه اینترنت با هم ارتباط برقرار می‌کنند، اکثر استاندارد‌ها با Web پیاده‌سازی شده‌اند. برای نمونه: ای پی آی Java Remote Method Invocation.

4- API های وب:

امروزه زمانی که اسم رابط برنامه نویسی کاربردی به گوشمان می‌خورد بدون شک ای پی آی وب در ذهنمان تداعی می‌شود (بیش‌ترین استفاده در این دسته قرار دارد). با استفاده از ای پی آی وب می‌توان اطلاعات را با استفاده از پروتکل HTTP و با قوانین خاصی ارسال و دریافت کرد. این قوانین می‌تواند شامل متد (method) ارسال در پروتکل HTTP و زبان نشانه‌گذاری مورد استفاده برای قالب‌بندی داده و… باشد. این معماری مبتنی بر معماری کلاینت-سرور است و معمولاً با استفاده از متد GET پیاده‌سازی می‌شود. 

انواع پروتکل های ای پی آی وب

از آنجا که بیش‌ترین استفاده از ای پی آی ها در Web application ها است، ما انواع ای پی آی های وب را به طور خلاصه برسی می‌کنیم.

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

• REST

Representational State Transfer (REST) یک پروتکل مبتنی بر کلاینت/سرور است که front end و back end را با استفاده از ای پی آی از هم جدا می‌کند. پروتکل رست هیچ داده‌ای را هنگام درخواست (Request) ها ذخیره نمی‌کند. این ای پی آی پاسخ (Response) ها را می‌توانند برای مدت کوتاهی ذخیره کنند. زبان نشانده‌گذاری آن‌ها می‌تواند JSON یا XML یا حتی متن معمولی باشد.

• RPC

The remote procedural (RPC) یا فراخوانی رویه راه دور یک روش ساده برای ارسال پارامتر‌ها و دریافت نتایج از طریق فراخوانی یک پروسه قابل اجرا است. این درحالی است که در ای پی آی رست  ما فقط می‌توانیم داده‌ها و منابعی ماننده اسناد را ارسال و دریافت کنیم. RPC ها می‌توانند با استفاده از JSON و XML مورد استفاده قرار بگیرند.

• SOAP

Simple Object Access Protocol (SOAP) یک پروتکل پیام‌رسانی است که توسط شبکه جهانی وب (World Wide Web) طراحی شده. زبان رایج برای استفاده از این پروتکل XML است و به طور گسترده‌ای در اینترنت مورد استفاده قرار می‌گیرد.پروتکل SOAP می‌تواند درHTTP و SMTP مورد استفاده قرار بگیرد. پروتکل SOAP می‌تواند به راحتی توسعه یافته و شامل تغییراتی شود.

مستندات ای پی آی چیست؟

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

مستندات ای پی آی نیز شامل اطلاعات دقیقی راجع‌به نحوه استفاده از رابط برنامه نویسی کاربردی (ای پی آی) است که توسط طراح رابط برنامه نویسی کاربردی آن نوشته می‌شود. 

چگونه از رابط برنامه نویسی کاربردی استفاده کنیم؟

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

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

مستندات یک رابط برنامه نویسی کاربردی می‌تواند بسیار بزرگ و پیچیده یا بسیار کوچک و ساده باشد.

مزایای استفاده از ای پی آی

همانطور که در ابتدای این مقاله گفتیم، رابط برنامه نویسی کاربردی می‌تواند از پیچیدگی‌ها جلو‌گیری کند. اما این تنها فایده استفاده از ای پی آی ها نیست. برخی از مزایای ای پی آی ها در لیست زیر آمده‌اند:

  • جلوگیری از پیچیدگی‌ها
  • ایجاد امنیت
  • ایجاد هماهنگی بین برنامه‌ها
  • استفاده از توابع ای پی آی در سیستم عاملی ماننده ویندوز، می‌تواند حجم برنامه را کاهش و کارایی را افزایش دهد
  • توسعه برنامه‌ها را برای استارت‌آپ ها ساده می‌کند

EndPoint در ای پی آی چیست؟

EndPoint را می‌توان یک مکان دیجیتالی در نظر گفت که ای پی آی منابع درخواستی را از آنجا استخراج می‌کند. EndPoint می‌تواند یک سری فایل یا مجموعه‌ای از فعالیت‌ها باشد. Endpoint جزئی از ای پی آی است در حالی که API دارای مفهوم گسترده‌تری نسبت به EndPoint است.

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

به‌عنوان مثال اگر یک API داریم که قرار است به ما اجازه جست‌و‌جو در دیتابیس سایت را بدهد، باید این موضوع مهم را در نظر گرفت که رشته‌های جست‌وجو نباید شامل دستورات SQL باشد، یا اگر هم بود، نباید نتیجه به کاربر نمایش داده شود.

یک EndPoint می‌تواند یک URL روی سرور وب باشد و بتوان به طور مستقیم به آن دسترسی پیدا کرد. به عنوان مثال با استفاده از EndPoint زیر می‌توان اطلاعاتی راجع‌به یک توییت به دست آورد:

https://api.twitter.com/2/tweets/{id}

روش های تست API مبتنی بر وب

برای این‌که بتوانیم یک رابط برنامه نویسی کاربردی یا EndPiont مبتنی بر وب را تست کنیم و از آن‌ها استفاده کنیم، متدهای ارسال و دریافت متفاوتی وجود دارند. بیش‌ترین استفاده از وب ای پی آی ها در نوع REST است و این نوع، از پروتکل HTTP استفاده می‌کند. این پروتکل دارای جزئیات فراوانی است، به طوری که کتاب‌هایی در این زمینه نوشته شده‌اند و نسخه‌های مختلف آن‌را برسی کرده‌اند. با این حال قصد نداریم خیلی وارد جزیئات این پروتکل بشویم و فقط روش‌های تست API  که می‌توان با استفاده از آن‌ها اطلاعات را ارسال و دریافت کرد را لیست می‌کنیم:

    • GET: برای دریافت داده
    • POST: برای ارسال داده
    • PUT: برای به روز رسانی داده
    • DELETE: برای حذف یک داده موجود

با دانستن این روش ها تست API کار ساده‌ای است.

بیش‌ترین استفاده از دو متد اول یعنی GET و POST است. از آنجا HTTP یک پروتکل یک‌طرفه است، (یعنی در هر زمان یا اطلاعات ارسال می‌شود یا دریافت و هم‌زمانی در کار نیست) ما همیشه در حال ارسال و دریافت داده هستیم. یعنی هر پرسشی باید شامل یک پاسخ باشد.

نمونه هایی از API های کاربردی

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

1- API های سیستم تصمیم یار در بیگ پرو1

خوشبختانه در بیگ پرو1 این امکان وجود دارد که با مدل سازی داده‌های موردنظر خود، بتوانید از داده‌های مدل سازی شده در برنامه خودتان استفاده کنید.

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

Windows API -2

همان‌طور که قبلاً اشاره کردیم، ای پی آی ها فقط مختص به وب نیستند. این رابط برنامه نویسی کاربردی بسیار کاربردی بوده و به طور گسترده‌ای توسط برنامه‌نویسان ویندوز به طور مستقیم و غیر مستقیم مورد استفاده قرار می‌گیرد. بسیاری از کار‌ها را نمی‌توان به طور مستقیم با یک زبان برنامه‌نویسی ماننده C# انجام داد و انجام دادن آن‌ها فقط با توابع ای پی آی ویندوز امکان‌پذیر است. به عنوان مثال نمی‌توان به راحتی اتصال وسایل جانبی را تشخیص داد یا نمی‌توان از هوک های سیستمی استفاده کند.

Telegram Bot API -3

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