Application Programming Interface یا رابط برنامه نویسی اپلیکیشن، کدی است که دو نرم افزار را قادر می سازد تا با هم ارتباط برقرار کنند. یک API تعریف میکند که چگونه یک توسعه دهنده باید از یک سیستم عامل یا برنامههای کاربردی دیگر خدمات درخواست کند و دادهها را در زمینههای مختلف و در کانالهای متعدد در معرض نمایش بگذارد.
هر داده ای را می توان با یک رابط برنامه نویسی اپلیکیشن به اشتراک گذاشت. APIها توسط فراخوانی تابع، متشکل از فعل ها و اسم ها پیاده سازی می شوند. نحو مورد نیاز در مستندات اپلیکیشن فراخوانی شده توضیح داده می شود. به عنوان مثال، در یک وب سایت املاک و مستغلات، یک API ممکن است دارایی های املاک موجود را بر اساس جغرافیا منتشر کند، در حالی که API دوم نرخ بهره فعلی را ارائه می دهد و سومی یک ماشین حساب وام مسکن ارائه می دهد.
در روزهای اولیه وب 2.0، مفهوم یکپارچه سازی داده ها و اپلیکیشن ها از منابع مختلف، mashup نامیده می شد. نرم افزارهای طراحی شده برای تبادل داده از طریق اینترنت و محاسبات ابری، همگی برای افزایش علاقه به APIها و سرویس ها ترکیب شده اند.
API ها چگونه کار می کنند؟
API ها از دو عنصر مرتبط تشکیل شده اند:
- مشخصاتی که نحوه تبادل اطلاعات بین برنامهها را در قالب درخواست به منظور پردازش و بازگرداندن دادههای لازم توضیح میدهد؛ و
- یک رابط نرم افزاری که با توجه به آن مشخصات نوشته شده و برای استفاده منتشر شده است.
نرم افزاری که می خواهد به ویژگی ها و قابلیت های API دسترسی پیدا کند، آن را فراخوانی می کند و نرم افزاری که API را ایجاد می کند، آن را منتشر می کند.
APIها به داده هایی که کاربران و سایر اپلیکیشن ها درخواست می کنند اجازه دسترسی می دهند. دسترسی به یک سرویس یا بخشی از عملکرد با استفاده از نقشهای از پیش تعریف شده تأیید میشود که مدیریت می کند چه کسی یا چه سرویسی میتواند به اقدامات و دادههای خاص دسترسی داشته باشد. APIها همچنین یک دنباله حسابرسی ارائه می دهند که جزئیات چه کسانی و چه چیزهایی به سیستم دسترسی داشته اند و چه زمانی این اتفاق افتاده است را در اختیار قرار می دهد.
اپلیکیشن هایی که API را فراخوانی می کنند به طور سنتی در زبان های برنامه نویسی خاص نوشته می شدند. APIهای وب را می توان از طریق هر زبان برنامه نویسی فراخوانی کرد، اما صفحات وب ایجاد شده در زبان HTML یا ابزارهای تولید اپلیکیشن نیز می توانند به آنها دسترسی داشته باشند.
رایج ترین معماری ها برای APIها عبارتند از Representational State Transfer (REST) وSimple Object Access Protocol (SOAP) که مشخصات یک پروتکل ارتباطی استاندارد را برای تبادل پیام بر اساس زبان XML تعریف می کند. SOAP به کدهای مرتبط با زیرساخت سطح پایین کمتری نسبت به REST نیاز دارد. با این حال، APIهای REST برای مقیاسبندی و استقرار مجدد آسان تر و برای پیاده سازی و ادغام با وبسایتها و خدمات ساده تر هستند. APIهای REST امروزه بیشتر مورد استفاده قرار می گیرند، به ویژه برای تعاملات وب.
چرا APIها برای تجارت مهم هستند
APIها کیفیت و تحویل نرم افزار و سرویس ها را بهبود بخشیده اند. نرم افزار سفارشی که برای یک هدف خاص توسعه یافته است، اغلب برای ارجاع به APIهایی نوشته می شود که ویژگی های مفید در زمینه های مختلف را ارائه می دهند. این امر زمان توسعه، هزینه و خطر خطا را کاهش می دهد.
تعداد فزاینده سرویس های وب که ارائه دهندگان ابری از طریق APIها در معرض قرار می دهند، ایجاد اپلیکیشن های مختص ابر، اینترنت اشیا و اپ هایی که از دستگاه های موبایل و کاربران پشتیبانی می کنند را ترغیب کرده است.
APIها یک لایه دیجیتال اضافه می کنند که از طریق آن داده ها و دارایی های شرکت با حاکمیت و امنیت لازم ارائه می شود. این رویکرد تعاملات مشتری، کارمند و شریک را افزایش می دهد. عملکرد و دامنه خدمات بیشتر ارزش ارائه شده به کاربران را افزایش می دهد و تجربه مشتری را بهبود می بخشد. به عنوان مثال، وب سایت قبلی نیازهای مشتری را در رابطه با جستجوی املاک پیش بینی می کند.
APIها همچنین فرصتهای کسب درآمد جدیدی را برای کسب و کارها ایجاد میکنند، مانند تولید دادهها با بستههای سفارشی شده و طرحهایی برای شرکای تجاری.
مزایای استفاده از API چیست؟
APIها مجموعه ای از قوانین هستند. آنها نحوه نوشتن کد برنامه توسط توسعه دهندگان را استاندارد می کنند و فرآیندهای توسعه نرم افزار داخلی سازمان را بهبود می بخشند.
استفاده از قوانین و قالبهای مشابه کد را سادهتر و شفافتر میکند. استانداردسازی همچنین همکاری بین توسعه دهندگان را تسهیل می کند زیرا آنها اجزای نرم افزاری را با هدف ادغام با API ها می سازند. این به نوبه خود توسعه ویژگی را تسهیل می کند و زمان ورود به بازار را کاهش می دهد.
APIهای عمومی و آنهایی که با شرکا به اشتراک گذاشته شده اند، سازمان را قادر می سازد تا کارهای زیر را انجام دهد:
کنترل و مدیریت ایمن نحوه دسترسی کاربران و سیستم ها به داده ها و عملکرد خدمات؛
به اشخاص ثالث اجازه می دهد تا از داده های آن استفاده کنند – حتی به معنای محدود – که باعث افزایش قرار گرفتن در معرض نام تجاری شرکت می شود.
پایگاه داده مشتریان خود را رشد دهد و نرخ تبدیل آن را با همسو کردن خدمات خود با سایر مارک های مورد اعتماد افزایش دهد. و
از APIهای آن پول درآورید تا به یک خط درآمد تبدیل شوند. این یک تاکتیک رایج برای درگاه های پرداخت آنلاین است. به عنوان مثال، شرکت هایی که از APIهای PayPal استفاده می کنند، مایلند برای استفاده از یک سیستم پرداخت قابل اعتماد هزینه پرداخت کنند.
چالش های استفاده از 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های وب برای نمایش منابعی مانند صفحات HTML طراحی شده اند و با استفاده از پروتکل HTTP قابل دسترسی هستند. هر URL وب یک API وب را فعال می کند. APIهای وب اغلب APIهای RESTful نامیده می شوند زیرا ناشر رابط های REST هیچ داده ای را به صورت داخلی در بین درخواست ها ذخیره نمی کند. به این ترتیب، درخواستهای بسیاری از کاربران اینترنت میتوانند در هم آمیخته شوند.
- APIهای راه دور از طریق یک شبکه ارتباطی برای دستکاری منابع خارج از کامپیوتر درخواست کننده، تعامل دارند. این یک دسته گستردهتر است که شامل APIهای وب می باشد، اما محدود به آن نیست. APIهای راه دور نیازی به طراحی بر اساس استانداردهای وب ندارند، اگرچه بسیاری از آنها چنین هستند. Java Database Connectivity API و Java Remote Method Invocation API دو نمونه از APIهای راه دور هستند.
- APIهای برنامه، مبتنی بر فناوری فراخوانی رویه راه دور (RPC) هستند که باعث می شود یک جزء برنامه راه دور برای بقیه نرم افزار، محلی به نظر برسد. APIهای معماری سرویس گرا، مانند APIهای سری WS مایکروسافت، APIهای برنامه هستند.
چرا طراحی API مهم است
طراحی خوب API برای استفاده موفق از API ضروری است. معماران نرم افزار زمان قابل توجهی را صرف بررسی تمام کاربردهای ممکن یک API و منطقی ترین راه برای استفاده از آن می کنند.
ساختارهای داده و مقادیر پارامتر، اهمیت ویژه ای دارند زیرا باید بین فراخوانی کننده یک API و ناشر آن مطابقت داشته باشند.
امنیت قوی نیز یکی از جنبه های مهم طراحی API است. بهره گیری از APIهای با پیکربندی نادرست یک روش معمول برای مهاجمان سایبری است. APIها دروازه ای هستند که سیستم ها و داده های یک سازمان را به کاربران داخلی و خارجی ارائه می کنند. هر گونه آسیب می تواند مشکلات امنیتی گسترده و جدی ایجاد کند.
چند نمونه از APIها
سیستمهای عامل و ابزارهای میانافزار ویژگیهای خود را از طریق مجموعهای از APIها که معمولاً جعبه ابزار نامیده میشوند، نمایش میدهند. دو مجموعه مختلف از ابزار که از مشخصات API یکسان پشتیبانی می کنند، برای برنامه نویسان قابل تعویض هستند و مبنای سازگاری و قابلیت همکاری هستند. مشخصات API دات نت مایکروسافت مبنایی برای بسته میان افزاری در لینوکس است که اکنون توسط مایکروسافت پشتیبانی می شود.
بسیاری از محصولات و ابزارهای نرم افزاری، از ابزارهای DevOps مانند Docker، Jenkins و GitLab گرفته تا پلتفرم های سازمانی مانند Microsoft SharePoint، عملکرد را از طریق APIها ارائه می دهند. رسانه های اجتماعی، به ویژه، از APIهای باز برای تسهیل عملکرد شخص ثالث، مانند توانایی ایجاد فیدهای خبری و اشتراک گذاری عکس ها، بهره می برند.
اینترنت محرک اصلی APIها است. شرکتهایی مانند فیسبوک، گوگل و یاهو APIهایی را منتشر میکنند تا توسعهدهندگان شخص ثالث را تشویق کنند تا بر روی توسعه قابلیتهای سرویس های این شرکت ها کار کنند. این APIها همه چیز از ویژگیهای اینترنتی جدید که سایتهای سرویسهای دیگر را مرور میکنند تا برنامههای دستگاه تلفن همراه که دسترسی آسان به منابع برنامههای وب را ارائه میدهند، را فراهم کردهاند. ویژگیهای جدید مانند تحویل محتوا، واقعیت افزوده و کاربردهای جدید فناوری پوشیدنی تا حد زیادی از طریق این APIها ایجاد میشوند.
ترندهای API
فراگیر بودن اینترنت، استفاده گسترده از محاسبات ابری و تغییر از اپلیکیشن های یکپارچه به میکروسرویس ها، همگی به افزایش استفاده از API کمک کرده اند. ترندهای پیرامون APIها شامل موارد زیر است:
REST و وب
فراخوانی های API وب می توانند از هر زبان برنامه نویسی انجام شوند، اما صفحات وب ایجاد شده در HTML یا ابزارهای تولید کننده اپلیکیشن نیز می توانند آنها را ایجاد کنند. افزایش نقش اینترنت و ابر در زندگی روزمره و فعالیت های تجاری، استفاده از APIها و ابزارهای برنامه نویسی ساده یا حتی عدم برنامه نویسی را برای دسترسی به API گسترش داده است.
REST و SOAP هر دو میتوانند خدمات ابری را فراخوانی کرده، به آنها متصل شوند، مدیریت کنند و با آنها تعامل داشته باشند. REST برای APIهای وب ترجیح داده می شود زیرا از پهنای باند کمتری استفاده می کند و گزینه های بیشتری برای زبان های برنامه نویسی مانند جاوا اسکریپت و پایتون در اختیار می گذارد. وب سایت های بزرگ مانند آمازون، گوگل، لینکدین و توییتر از APIهای RESTful استفاده می کنند.
APIها و ابر
محاسبات ابری قابلیتهای جدیدی را برای تقسیم نرمافزار به اجزای قابل استفاده مجدد، ارتباط اجزا به درخواستها و مقیاس دهی تعداد نسخههای نرمافزار با تغییر تقاضا معرفی میکند.
این قابلیتهای ابری تمرکز APIها را از مدلهای برنامهنویس محور ساده مبتنی بر RPC به مدلهای وب محور RESTful و حتی به آنچه برنامهنویسی فانکشنال یا مدلهای سرویس لامبدا نامیده می شوند که میتوانند فوراً در صورت نیاز در فضای ابری مقیاس دهی شوند، تغییر دادهاند.
API به عنوان سرویس
گرایش به فکر کردن به APIها به عنوان مظهر منابع عمومی تغییر کرده است. بسیاری از اپلیکیشنها و کاربران از APIها بهعنوان یک ابزار عمومی استفاده میکنند، اما آنها نیز سرویس در نظر گرفته میشوند و معمولاً به توسعه و استقرار کنترلشدهتری نیاز دارند.
SOA و میکروسرویسها نمونه هایی از 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 درخواستهای منابع را دریافت می کند. آنها معمولاً یک URL هستند که توسط سرور در معرض دید قرار می گیرند و سیستم های دیگر را قادر می سازد به نقاط پایانی متصل شوند. آنها به عنوان نقاط ورود به شبکه شرکت عمل می کنند. نقاط پایانی جایی هستند که کد توسعه دهنده با کد و دادههای یک سازمان در تعامل است.
نقاط پایانی API اهداف جذابی برای مهاجمان هستند و باید محافظت شوند. برخی از اقدامات امنیتی به شرح زیر است:
- از محدود کردن نرخ برای جلوگیری از باتها و تهدیدات انکار سرویس توزیع شده (DDoS) استفاده کنید.
- برای اطمینان از وارد شدن اطلاعات صحیح و جلوگیری از حملات تزریق، ورودی را اعتبارسنجی کنید.
- رمزهای عبور را به عنوان مقادیر هش نامتقارن ذخیره کنید.