API

API چیست؟

در برنامه نویسی رایانه ، یک رابط برنامه نویسی برنامه (API) مجموعه ای از تعاریف فرعی ، پروتکل های ارتباطی و ابزارهایی برای ساختن نرم افزار است. به طور کلی ، این مجموعه ای از روش های واضح تعریف ارتباطات بین مؤلفه های مختلف است. یک API خوب با تهیه کلیه بلوک های ساختمانی ، که توسط برنامه نویس جمع شده اند ، توسعه یک برنامه رایانه ای را آسان تر می کند.

پیش از فراگیر شدن سیستم‌های کامپیوتری در صنایع مختلف، انسان به عنوان کسی که قرار بود با نرم‌افزارهای کامپیوتری بیشترین تعامل را داشته باشد در نظر گرفته می‌شد به طوری که فارغ از کاری که نرم‌افزار انجام می‌داد، از ویرایش تصاویر گرفته تا ارسال ایمیل و غیره، انسان به عنوان موجودیتی که قرار بود با نرم‌افزار مذکور کار کند مرکز توجه قرار داشت به طوری که وی از طریق User Interface یا به اختصار UI به تعامل با نرم‌افزار می‌پرداخت (همان‌گونه که مثلاً امروزه از طریق رابط کاربری محیط دسکتاپ سیستم‌عامل، کارهای مختلفی را انجام می‌دهیم)

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

Application Programming Interface چیست؟

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

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

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

API

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

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

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

همان‌طور که برق وسائل الکتریکی منزل‌مان توسط شبکهٔ توزیع برق تأمین می‌گردد، اپلیکیشن‌های مختلف هم برای دستیابی به دیتای مورد نیاز خود به شبکه اینترنت نیاز دارند.

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

چرا به API نیاز داریم؟

می توانیم جواب این سوال را با یک کلمه بدهیمارتباطات. شما ممکن است بپرسید چرا ارتباط بسیار مهم است. برای جواب به این سوال تصور کنید Notepad نمی توانست که نوشته ها از MS Word یا Google Chrome یا Firefox کپی و پیست (Copy & Paste)کند. تصور کنید باید برای هر نوع نیاز در هر زمانی تمامی متن را در نرم افزار دیگر تایپ می کردید. این فقط یک از مثال های مربوط به ارتباط بین نرم افزارها است و باید بدانیم که تمامی ارتباط ها از طریق API امکان پذیر است.

API مالی

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

API و پلتفرم Finicity توسعه‌دهندگان نرم‌افزار را قادر به یکپارچه سازی آسان و راحت داده‌های مالی با appهای خود می‌سازند. با استفاده از Finicity Aggregation API کاملا مبتنی بر Rest، توسعه‌دهندگان می‌توانند با افزایش ویژگی‌های کلیدی API، تجاربی استثنایی برای کاربر ایجاد کنند. این API به منظور افزایش بازارهای ممکن برای appها، بیش از ۱۶۰۰۰ منبع داده مشتریان را براحتی با مجموعه وسیعی از موسسات مالی مرتبط می‌سازد. انواع جامع حساب به توسعه‌دهندگان اجازه می‌دهند تا appها را با داده‌های مورد نیاز آن تغذیه کنند و به این ترتیب انتظارات کاربران را برآورده سازند. شکل زیر به طور واضح نشان می‌دهد که APIهای Finicity در چه زمینه‌ای کاربرد دارند: