رابط برنامهنویسی کاربردی (Application Programming Interface) چیست؟
رابط برنامهنویسی کاربردی (API) مجموعهای از قوانین است که به یک برنامه نرمافزاری امکان میدهد تا دادهها را به برنامه نرمافزاری دیگری منتقل کند.
APIها به توسعهدهندگان اجازه میدهند تا از کار تکراری اجتناب کنند؛ به جای ساخت و بازسازی توابع برنامهای که از قبل وجود دارند، توسعهدهندگان میتوانند با قالببندی درخواستها طبق نیازهای API، توابع موجود را در برنامههای جدید خود ادغام کنند.
API یک “رابط” است، به این معنا که راهی برای تعامل یک چیز با چیز دیگر فراهم میکند. به عنوان مثالی واقعی، یک دستگاه خودپرداز دارای رابطی است — یک صفحه نمایش و چند دکمه — که به مشتریان امکان میدهد با بانک خود تعامل کنند و خدماتی مانند برداشت پول نقد را درخواست کنند. به طور مشابه، API روشی است که یک نرمافزار با برنامه دیگری برای دریافت خدمات مورد نیاز تعامل میکند.
تصور کنید جنیفر وبسایتی میسازد که به مسافران کمک میکند قبل از رفتن به محل کار، وضعیت ترافیک بزرگراه را بررسی کنند. جنیفر میتوانست زمان و هزینه زیادی را صرف راهاندازی یک سیستم پیچیده ردیابی بزرگراه کند تا این اطلاعات را به کاربران وبسایتش ارائه دهد. اما این قابلیتها از قبل وجود دارند، زیرا طرفهای خارجی چنین سیستمهایی را ایجاد کردهاند. به جای اختراع دوباره چرخ، وبسایت جنیفر از API ارائهشده توسط یک سرویس ردیابی بزرگراه خارجی استفاده میکند. حالا جنیفر میتواند روی ساخت سایر جنبههای وبسایت تمرکز کند.
درخواست API چیست؟
درخواست API، که به عنوان فراخوانی API نیز شناخته میشود، پیامی است که به یک API ارسال میشود و استفاده از آن را فعال میکند.
با بازگشت به مثال، جنیفر وبسایت خود را به گونهای طراحی میکند که هنگام بارگذاری، بهطور خودکار یک درخواست API به سرویس ردیابی بزرگراه تولید میکند. پاسخ از آن سرویس به وبسایت بازمیگردد و امکان نمایش آخرین اطلاعات ترافیک بزرگراه را فراهم میکند.
درخواستهای API باید مطابق با الزامات API قالببندی شوند تا کار کنند. الزامات API به عنوان “شِما” (schema) شناخته میشوند. شِما همچنین نوع پاسخهایی که به هر درخواست ارائه میشود را توصیف میکند.
فرض کنید یک مسافر از وبسایت جنیفر برای بررسی ترافیک در بزرگراه ۱۹۲ استفاده میکند. وبسایت یک درخواست API برای ارائه این اطلاعات ارسال میکند — پیامی که میگوید “بزرگراه ۱۹۲”. سرور API سرویس ردیابی بزرگراه این پیام را دریافت میکند و با زمانهای سفر در بزرگراه ۱۹۲ پاسخ میدهد. شِمای API را به این صورت تصور کنید:
درخواست API | پاسخ API |
“بزرگراه ۱۹۲” | زمانهای سفر در بزرگراه ۱۹۲ |
“بزرگراه ۲۱۷” | زمانهای سفر در بزرگراه ۲۱۷ |
“بزرگراه ۲۲۵” | زمانهای سفر در بزرگراه ۲۲۵ |
(توجه داشته باشید که این یک مثال بسیار سادهشده است — درخواستها، پاسخها و شِماهای API در دنیای واقعی پیچیدهتر هستند.)
حال فرض کنید وبسایت جنیفر یک درخواست API برای “بزرگراه ASDFGHJ” ارسال میکند. این یک درخواست معتبر نیست زیرا با شِمای API مطابقت ندارد، که تنها اجازه نامهای واقعی بزرگراهها را میدهد. سرور نمیتواند به چنین درخواستی پاسخ قابل استفادهای ارائه دهد.
نقطه پایانی API چیست؟
نقطه پایانی (endpoint) انتهای یک کانال ارتباطی است. نقطه پایانی API مکانی است که پاسخ API از آنجا سرچشمه میگیرد.
در مثال، مشتری ارتباط API وبسایت جنیفر است و نقطه پایانی سروری است که API را میزبانی میکند. درخواستهای API جنیفر باید به یک URL خاص (URL یک آدرس وب است، مانند www.cloudflare.com/learning) ارسال شوند که سرور API مسئول آن است تا پاسخی دریافت کنند.
یکپارچهسازی API چیست؟
یکپارچهسازی API ترکیب دو یا چند برنامه با استفاده از APIها است. یکپارچهسازی API به یک برنامه امکان میدهد تا از قابلیتهای برنامه دیگر بهرهمند شود، درست مانند ترکیب یک تیم فروش و یک تیم بازاریابی در یک دفتر که به این دو تیم امکان میدهد با هم کار کنند و از تلاشهای یکدیگر بهرهمند شوند. یکپارچهسازیهای API همچنین معمولاً برای همگامسازی دادهها بین دو برنامه یا پایگاه داده استفاده میشوند.
API وب چیست؟
هر چیزی که شامل کد کامپیوتری باشد میتواند API داشته باشد، از سیستمهای عامل گرفته تا کتابخانههای نرمافزاری. API وب بهطور خاص برای استفاده توسط برنامههای وب که از طریق اینترنت قابل دسترسی هستند طراحی شده است.
APIهای وب برای اینترنت مدرن بسیار مهم هستند. تقریباً تمام برنامههای رو به کاربر به APIها وابستهاند تا کار کنند (نه فقط وبسایت جنیفر!). فلسفههای توسعه نرمافزار کامل مانند JAMstack، که JAM مخفف JavaScript، APIs، و markup است، به استفاده از APIها وابستهاند. مثال دیگر معماری میکروسرویسها است که از APIها برای فراخوانی توابع مختلف تشکیلدهنده یک برنامه استفاده میکند. حتی برنامههایی که بدون این رویکردها ساخته شدهاند معمولاً به APIها وابستهاند.
APIهای SOAP و REST چیست؟
APIهای SOAP و REST دستهبندیهای مختلفی از APIها را توصیف میکنند.
SOAP (پروتکل دسترسی به اشیاء ساده) نوعی پروتکل است. APIهای SOAP، APIهایی هستند که فقط از پروتکل SOAP استفاده میکنند.
REST (انتقال حالت نمایشی) یک سبک معماری برای سرویسهای وب است. API REST هر API است که با استفاده از معماری REST ساخته شده است. برخلاف APIهای SOAP، APIهای REST با هر پروتکلی کار میکنند. اکثر APIهای امروزی REST هستند.
آیا APIها خطرات امنیتی ایجاد میکنند؟
همانطور که اجازه دادن به یک فرد برای استفاده از یک برنامه خطر سوءاستفاده از برنامه را ایجاد میکند، یک API نیز خطر سوءاستفاده از سرویس توسط مشتری API را به همراه دارد. علاوه بر این، فراخوانیهای API وب از طریق اینترنت منتقل میشوند و میتوانند مانند هر انتقال داده دیگری در شبکه رهگیری، جعل یا تغییر داده شوند.
امنیت API تمرین حفاظت از APIها در برابر حملات و سوءاستفاده است. با توجه به اهمیت APIها برای اینترنت مدرن، امنیت API جزء اصلی امنیت برنامههای وب است. اقدامات امنیتی حیاتی API شامل موارد زیر است:
- محدودیت نرخ (Rate Limiting): مشتریانی که درخواستهای API بیش از حد ارسال میکنند میتوانند API را برای سایر مشتریان کند یا خراب کنند. محدودیت نرخ سقفی برای تعداد درخواستهای API که میتوانند از یک نقطه پایانی API در یک بازه زمانی خاص ارسال شوند تعیین میکند.
- محافظت در برابر DDoS: مشابه محدودیت نرخ، محافظت در برابر حملات توزیعشده انکار سرویس (DDoS) حملات DDoS را متوقف میکند، که هدفشان خسته کردن یا غرق کردن یک API با حجم زیادی از درخواستها بهصورت همزمان است.
- احراز هویت: احراز هویت نقاط پایانی API و مشتریان برای اطمینان از اینکه درخواستهای API از منابع معتبر میآیند و نه از مهاجمان مهم است. TLS متقابل (mTLS) یکی از مؤثرترین اشکال احراز هویت API است.
- اعتبارسنجی شِما: اگر یک درخواست API با شِمای API مطابقت نداشته باشد، API ممکن است به روشهای غیرمنتظرهای واکنش نشان دهد — برای مثال، با افشای دادههای محرمانه. اعتبارسنجی شِما به API امکان میدهد تا چنین درخواستهایی را رد کند.
Cloudflare API Shield شامل این ویژگیها و سایر ویژگیهای امنیتی برای محافظت در برابر تهدیدات API است. برای مطالعه عمیقتر درباره امنیت API، به مقاله امنیت API چیست؟ مراجعه کنید.
پرسشهای متداول (FAQ)
رابط برنامهنویسی کاربردی (API) چیست؟
API مجموعهای از قوانین است که به یک برنامه نرمافزاری امکان میدهد با برنامه دیگر ارتباط برقرار کند. APIها به توسعهدهندگان اجازه میدهند تا از توابع موجود در برنامههای خود استفاده کنند به جای اینکه آنها را از ابتدا بسازند.
درخواست یا فراخوانی API چیست؟
درخواست API پیامی است که به یک API ارسال میشود و عملکرد آن را فعال میکند. پیام باید مطابق با شِمای API قالببندی شده و به نقطه پایانی درست هدایت شود تا پاسخ معتبری دریافت کند.
نقطه پایانی API چیست؟
نقطه پایانی API URL یا مکان خاصی است که درخواستهای API به آن هدایت میشوند. این جایی است که برنامهها درخواستهای خود را برای دریافت داده یا خدمات از API ارسال میکنند.
APIهای وب چیست؟
APIهای وب، APIهایی هستند که برای استفاده توسط برنامههای وب که از طریق اینترنت قابل دسترسی هستند طراحی شدهاند. آنها برای اکثر خدمات دیجیتال مدرن و برنامههای مبتنی بر وب ضروری هستند.
امنیت API چیست؟
امنیت API تمرین حفاظت از APIها در برابر حملات و سوءاستفاده است. اقدامات کلیدی شامل محدودیت نرخ، احراز هویت (بهویژه TLS متقابل)، اعتبارسنجی شِما و محافظت در برابر DDoS است.
تفاوت بین APIهای REST و SOAP چیست؟
APIهای REST از یک سبک معماری انعطافپذیر پیروی میکنند و میتوانند با هر پروتکلی کار کنند. APIهای SOAP از پروتکل خاصی به نام پروتکل دسترسی به اشیاء ساده استفاده میکنند. اکثر APIهای امروزی REST هستند.
شِمای API چیست؟
شِمای API قوانین نحوه قالببندی درخواستهای API و نوع پاسخهایی که API ارائه میدهد را تعریف میکند. این اطمینان میدهد که درخواستها و پاسخها ساختار استانداردی دارند. اعتبارسنجی شِما همچنین میتواند به جلوگیری از حملات کمک کند. درخواستهایی که با شِما مطابقت ندارند میتوانند کنار گذاشته شوند؛ این اطمینان میدهد که API به روشهای غیرمنتظرهای مانند افشای دادههای محرمانه رفتار نکند.
یکپارچهسازی API چیست؟
یکپارچهسازی API فرآیند اتصال دو یا چند برنامه با استفاده از APIها است که به آنها امکان میدهد دادهها و عملکردها را به اشتراک بگذارند.