API چیست و چه کاربردی دارد ؟
احتمالاً قبلاً اصطلاحات API، API عمومی یا Web API را شنیدهاید. این دسته از اصطلاحات معمولاً توسط شرکتهای نرمافزاری در زمان صحبت و بحث درباره یک برنامه، سیستمعامل یا وبسایت مورداستفاده قرار میگیرند. از آنها در همهجای دنیای امروز استفاده میشود و سود فوقالعادهای را به همراه دارند؛ اما آیا تابهحال فکر کردهاید که Application Programming Interfaces درواقع چیست یا چگونه از آن استفاده کنید؟
API کلمه اختصار یافته (Application Programming Interfaces) به معنی رابط برنامهنویسی اپلیکیشن است که در اقتصاد امروز بیش از هر زمان دیگری نقش دارد. آنها به ما امکان میدهند دادههای مهم را به اشتراک بگذاریم و عملکردهای عملی - تجاری را بین دستگاهها، برنامهها و افراد نشان دهیم؛ اگرچه ممکن است متوجه آنها نشویم. رابط برنامهنویسی اپلیکیشن واقعاً همهجا هستند و زندگی ما را از پشتصحنه تأمین میکنند.
Application Programming Interfaces
API مخفف Application Programming Interfaces است، مفهومی که از ابزارهای خط فرمان و کد جاوا گرفتهشده تا برنامههای وب Ruby on Rails، در همهجا اعمال میشود. درواقع رابط برنامهنویسی اپلیکیشن یک عملگر در پشتصحنه است که کاربران فضای اینترنتی بدون اینکه عملکرد آن را ببینید از آن بهره میبرند.
رابط برنامهنویسی اپلیکیشن راهی برای تعامل برنامهای با یک جز یا منبع نرمافزاری جداگانه است. بهطورکلی، رابط برنامهنویسی اپلیکیشن رابطی است که تعاملات بین چندین برنامه نرمافزاری یا واسطههای نرمافزار - سخت افزار را تعریف میکند.
انواع API بر اساس سیاستهای انتشار
رابط برنامهنویسی اپلیکیشن اهداف بیشماری را دنبال میکند. بهطورکلی، آنها میتوانند توسعه نرمافزار را ساده و تسریع کنند. برنامهنویسان میتوانند از طریق دیگر ارائهدهندگان، قابلیتهای موجود را اضافه کنند یا با استفاده از خدمات ارائهدهندگان شخص ثالث، برنامههای جدید بسازند.
در همه این موارد، متخصصان مجبور نیستند با کد منبع سروکار داشته باشند و سعی کنند نحوه کار را بفهمند. آنها بهسادگی نرمافزار خود را به یک نرمافزار دیگر متصل میکنند. بهعبارتدیگر، رابط برنامهنویسی اپلیکیشن بهعنوان یکلایه انتزاعی بین دو سیستم عمل میکنند و پیچیدگی و جزئیات عملکرد سیستم دوم را پنهان میکنند. ازنظر سیاستهای انتشار، API میتواند خصوصی، شریک و عمومی باشد.
API خصوصی
این رابطهای نرمافزاری کاربردی برای بهبود راهحلها و خدمات درونسازمانی طراحیشدهاند. توسعهدهندگان داخلی یا پیمانکاران ممکن است از این رابط برنامهنویسی اپلیکیشن برای ادغام دستگاهها یا برنامههای IT شرکت، ساخت سیستمهای جدید یا برنامههای مشتری استفاده کنند که از سیستمهای موجود بهره میبرند.
حتی اگر برنامهها بهصورت عمومی در دسترس باشند، رابط کاربری فقط برای کسانی که مستقیماً با ناشر رابط برنامهنویسی اپلیکیشن کار میکنند در دسترس است. این استراتژی خصوصی به شرکت اجازه میدهد تا کاربر رابط برنامهنویسی اپلیکیشن را کاملاً کنترل کند.
API مشترک
API مشترک به طور آشکار تبلیغ میشود اما با شرکای تجاری که توافقنامهای با ناشر امضا کردهاند به اشتراک گذاشته میشود. مورداستفاده معمول برای آن ادغام نرمافزار بین دو طرف است.
شرکتی که به شرکای خود اجازه دسترسی به داده یا قابلیت بهرهمندی از جریان درآمد اضافی را میدهد، درعینحال، میتواند نحوه استفاده از داراییهای دیجیتال در معرض دید را کنترل کند و اطمینان حاصل کند که راهحلهای شخص ثالث با استفاده از رابط برنامهنویسی اپلیکیشن آنها تجربه کاربر مناسبی را فراهم و هویت شرکت را در برنامههای خود حفظ میکند.
API عمومی
این رابط برنامهنویسی اپلیکیشن همچنین بهعنوان توسعهدهنده خارجی شناخته میشود و برای هر توسعهدهنده شخص ثالث در دسترس است. API عمومی امکان افزایش آگاهی از نام تجاری و دریافت منبع درآمد اضافی را هنگام اجرای صحیح فراهم میکند.
دو نوع API عمومی باز (رایگان) و تجاری وجود دارد. تعریف Open API نشان میدهد که تمام ویژگیهای API عمومی را دارا است و میتواند بدون شرایط و ضوابط محدودکننده مورداستفاده قرار گیرد. بهعنوانمثال، میتوان برنامهای ساخت که از رابط برنامهنویسی اپلیکیشن بدون تأیید صریح تأمینکننده رابط برنامهنویسی اپلیکیشن یا هزینههای مجوز اجباری استفاده کند.
در این تعریف همچنین آمده است که توصیف رابط برنامهنویسی اپلیکیشن و هرگونه مستندات مربوطه باید به طور آشکار در دسترس باشد و از رابط برنامهنویسی اپلیکیشن میتوان به طور آزادانه برای ایجاد و آزمایش برنامهها استفاده کرد.
کاربران API تجاری هزینه اشتراک را پرداخت میکنند یا از رابط برنامهنویسی اپلیکیشن بهصورت همزمان استفاده میکنند. یک روش محبوب در بین ناشران ارائه آزمایشهای رایگان است؛ بنابراین کاربران میتوانند رابط برنامهنویسی اپلیکیشن را قبل از خرید اشتراک ارزیابی کنند.
موارد استفاده از Application Programming Interfaces
Application Programming Interfaces را میتوان باتوجهبه سیستمی که برای آن طراحیشده طبقهبندی کرد.
-
API پایگاه داده
API پایگاه داده ارتباط بین یک برنامه و یک سیستم مدیریت پایگاه داده را فعال میکند. توسعهدهندگان با نوشتن پرسوجو برای دسترسی به دادهها، تغییر جدولها و غیره با پایگاههای داده کار میکنند.
-
API سیستمعامل
این گروه از رابط برنامهنویسی اپلیکیشن نحوه استفاده برنامهها از منابع و خدمات سیستمعاملها را تعریف میکند. هر سیستمعامل مجموعهای از رابط برنامهنویسی اپلیکیشن خود را دارد.
-
API از راه دور
API از راه دور استانداردهای تعامل را برای برنامههایی که روی ماشینهای مختلف اجرا میشوند، تعریف میکند. بهعبارتدیگر، یک محصول نرمافزاری به منابعی که در خارج از سیستم درخواست میکنند دسترسی پیدا میکند و این نام را توضیح میدهد. ازآنجاکه دو برنامه از راه دور از طریق یک شبکه ارتباطی، بهویژه اینترنت متصل هستند، بیشتر APIهای از راه دور بر اساس استانداردهای وب نوشته میشوند.
-
API وب
این کلاس، متداولترین رابط برنامهنویسی اپلیکیشن است. API وب، دادهها و قابلیتهای قابل خواندن توسط ماشین را بین سیستمهای مبتنی بر وب که نمایانگر معماری کلاینت سرور هستند، فراهم میکند. این رابط برنامهنویسی اپلیکیشن عمدتاً درخواستهای برنامههای وب و پاسخهای سرورها را با استفاده از پروتکل انتقال متن (HTTP) ارائه میدهد. توسعهدهندگان میتوانند از این کلاس برای گسترش عملکرد برنامهها یا سایتهای خود استفاده کنند.
مشخصات و پروتکلهای Application Programming Interfaces
هدف از مشخصات رابط برنامهنویسی اپلیکیشن استانداردسازی تبادل داده بین سرویسهای وب است. در این حالت، استانداردسازی به معنای توانایی برقراری ارتباط یکپارچه با یکدیگر از سیستمهای متنوع است که به زبانهای مختلف برنامهنویسی نوشتهشده و یا روی سیستمعاملهای مختلف کار میکنند یا از فناوریهای مختلفی استفاده میکنند.
تماس از راه دور (RPC)
API وب ممکن است به اصول مبادله منابع بر اساس یک تماس از راه دور عمل کند. این پروتکل تعامل بین برنامههای مبتنی بر سرویسگیرنده را مشخص میکند. یک برنامه (سرویسگیرنده) از برنامه دیگری (سرور)، واقع در رایانه دیگری در شبکه، داده یا عملکرد را درخواست میکند و سرور پاسخ موردنیاز را ارسال میکند. RPC همچنین بهعنوان فرا خود فرعی یا فراخوانی عملکردی شناخته میشود. یکی از دو روش پیادهسازی تماس رویه از راه دور SOAP است.
پروتکل دسترسی به سرویس شی (SOAP)
مطابق تعریف مایکروسافت که آن را توسعه داده است SOAP یک پروتکل سبک برای تبادل اطلاعات ساختاریافته در یک محیط غیرمتمرکز و توزیعشده است. بهطورکلی، این مشخصات شامل قوانین نحوی پیامهای درخواست و پاسخ ارسالشده توسط برنامههای وب هستند. یک رابط برنامهنویسی اپلیکیشن که با اصول SOAP مطابقت دارد پیامرسانی XML بین دستگاهها را از طریق HTTP یا پروتکل انتقال ایمیل ساده (SMTP) برای انتقالنامه امکانپذیر میکند.
زبان نشانهگذاری قابل توسعه (XML) یک قالب متن ساده و بسیار انعطافپذیر است که به طور گسترده برای ذخیرهسازی دادهها و تبادل از طریق اینترنت یا شبکههای دیگر استفاده میشود. XML مجموعهای از قوانین را برای رمزگذاری اسناد در قالبی تعریف میکند که هم انسان و هم ماشین بتوانند آن را بخوانند.
زبان نشانهگذاری مجموعهای از نمادها است که میتواند در متن قرار گیرد تا قسمتهای سند متن را مشخص و برچسبگذاری کند. اسناد متنی XML حاوی برچسبهای توصیفی خود از اشیا data داده است که باعث میشود آنها بهراحتی قابل خواندن باشند.
SOAP بیشتر با نرمافزارهای تحت وب سازمانی برای اطمینان از امنیت بالای دادههای منتقلشده استفاده میشود. SOAP در میان ارائهدهندگان درگاههای پرداخت، مدیریت هویت و راهحلهای CRM و همچنین خدمات مالی و ارتباط از راه دور ترجیح داده میشود. API عمومی PayPal یک SOAP شناختهشده است. همچنین اغلب برای پشتیبانی سیستم قدیمی استفاده میشود.
انتقال وضعیت نمایندگی (REST)
اصطلاح REST در سال 2000 توسط روی فیلدینگ، دانشمند علوم رایانهای ارائه شد. برخلاف SOAP که یک پروتکل است، REST یک سبک معماری نرمافزاری با شش محدودیت برای ساخت برنامههایی است که با HTTP کار میکنند، اغلب خدمات وب. شبکه جهانی وب متداولترین کاربرد این سبک معماری است.
REST گزینه سادهتری برای SOAP در نظر گرفتهشده است که استفاده از آن برای بسیاری از توسعهدهندگان دشوار است؛ زیرا برای تکمیل هر کار و دنبال کردن ساختار XML برای هر پیام ارسالی، کد زیادی لازم است. REST از منطق دیگری پیروی میکند؛ زیرا دادهها را بهعنوان منابع در دسترس قرار میدهد. هر منبع با یک URL منحصربهفرد نشان داده میشود و فرد میتواند با تهیه URL آن این منبع را درخواست کند.
API وب را که با محدودیتهای معماری REST مطابقت دارند، RESTful API مینامند. این API از درخواستهای HTTP (روشها یا افعال AKA) برای کار با منابع استفاده میکند. سیستمهای RESTful از پیامرسانی در قالبهای مختلف مانند متن ساده، HTML، YAML، XML و JSON پشتیبانی میکنند، درحالیکه SOAP فقط به XML اجازه میدهد. توانایی پشتیبانی از چندین قالب برای ذخیره و مبادله داده یکی از دلایلی است که این روزها REST برای ساخت API عمومی انتخاب رایج است.
غولهای رسانههای اجتماعی و شرکتهای مسافرتی با ارائه API خارجی نمای تجاری خود را بیشازپیش بهبود میبخشند. توییتر دارای API RESTful متعدد است. Expedia برای شرکای خود دارای SOAP و RESTful API است.
GraphQL
نیاز به توسعه سریعتر ویژگیها، بارگذاری کارآمدتر دادهها به دلیل افزایش پذیرش موبایل و تعداد زیادی مشتری، توسعهدهندگان را وادار کرد تا به دنبال روشهای دیگری برای معماری نرمافزار باشند. GraphQL که در ابتدا توسط فیسبوک در سال 2012 برای استفاده داخلی ایجاد شد، REST جدید با سازمانهایی مانند Shopify، Yelp، GitHub، Coursera و New York Times است که از آن برای ساخت رابط برنامهنویسی اپلیکیشن استفاده میکنند.
GraphQL یکزبان پرسوجو برای رابط برنامهنویسی اپلیکیشن است. این به مشتری اجازه میدهد تا دادههای دقیق موردنیاز خود را جزئیات داده و تجمع دادهها را از چندین منبع ساده کند؛ بنابراین توسعهدهنده میتواند با استفاده از یک تماس رابط برنامهنویسی اپلیکیشن تمام دادههای موردنیاز را درخواست کند. یکی دیگر از ویژگیهای خاص GraphQL استفاده از سیستم نوع برای توصیف دادهها است.
برنامهها با استفاده از GraphQL کنترل میکنند که چه دادههایی را برای گرفتن از سرور نیاز دارند که به آنها امکان میدهند حتی در صورت کند بودن اتصال تلفن همراه، سریع اجرا شوند.
مستندات Application Programming Interfaces
مهم نیست که رابط برنامهنویسی اپلیکیشن برای ایجاد یا گسترش محصولات نرمافزاری چند فرصت ایجاد میکند. اگر توسعهدهندگان نحوه کار با آن را نمیفهمند، این یک قطعه کد غیرقابلاستفاده است. اسناد مستند و ساختاریافته رابط برنامهنویسی اپلیکیشن که نحوه استفاده مؤثر و یکپارچهسازی از رابط برنامهنویسی اپلیکیشن را به روش درک آسان توضیح میدهد، یک توسعهدهنده را برای توصیه رابط برنامهنویسی اپلیکیشن به همسالان خوشحال و مشتاق میکند.
مستندات API یک کتابچه راهنمای مرجع با تمام اطلاعات لازم در مورد رابط برنامهنویسی اپلیکیشن ازجمله توابع، کلاسها، انواع بازگشت و آرگومانها هستند. عناصر محتوای متعددی مستندات خوبی را ایجاد میکنند، مانند:
-
یک راهنمای شروع سریع
-
اطلاعات احراز هویت
-
توضیحات مربوط به هر تماس API (درخواست)
-
نمونههایی از هر درخواست و بازگشت همراه با توضیحات پاسخ، پیامهای خطا و غیره
-
نمونه کد برای زبانهای برنامهنویسی معروف مانند پایتون، جاوا، جاوا اسکریپت یا PHP.
-
آموزشها
-
مثالهای SDK (در صورت موجود بودن SDK) نحوه دستیابی به منبع و غیره را نشان میدهند.
مستندات ممکن است ساکن و تعاملی باشند. مورد آخر امکان آزمایش رابط برنامهنویسی اپلیکیشن و دیدن نتایج بازگشت را فراهم میکند و معمولاً از دو ستون تشکیلشده است: انسان و ماشین. ستون انسانی شامل توصیفات رابط برنامهنویسی اپلیکیشن است و دستگاه دارای یک کنسول برای برقراری تماس و حاوی اطلاعاتی است که مشتریان و سرورها هنگام آزمایش رابط برنامهنویسی اپلیکیشن به آنها علاقهمند میشوند.
Generation فرآیند مستندسازی API توسط توسعهدهندگان و نویسندگان فنی است. متخصصان ممکن است از راهحلهای مستندسازی API (بهعنوانمثال، ابزارهای Swagger، Postman، Slate، یا ReDoc) برای یکسانسازی ساختار و طراحی اسناد استفاده کنند.
حرف آخر
اگر نه تنها از زاویه توسعه نرمافزار بلکه از زاویه همکاری تجاری نیز به رابط برنامهنویسی اپلیکیشن نگاه کنیم، نقش آنها بسیار بیشتر است. این رابطهای قابل خواندن از طریق ماشین برای مبادله منابع مانند سرویسهای تحویل هستند که امکان اتصال تکنولوژیکی را فراهم میکنند.
بیش از 60 درصد از شرکتکنندگان در گزارش وضعیت فعلی API Integration 2018 موافقت کردند که یکپارچهسازی رابط برنامهنویسی اپلیکیشن برای استراتژی تجاری آنها حیاتی است. این مطالعه همچنین حاکی از آن است که بیش از 50 درصد از کل مشاغل از طریق API مشترک هستند.
در این راستا، دو وظیفه اصلی برای تصمیمگیرندگان و توسعهدهندگان وجود دارند که شامل انتخاب رابط برنامهنویسی اپلیکیشن مناسب نیازهای خاص شرکتی و درک نحوه استفاده مؤثر از آن است.