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