تصور کنید یک فروشگاه اینترنتی دارید که بعد از ثبت سفارش باید درگاه پرداخت را باز کند، برای مشتری پیامک بفرستد، موجودی انبار را کم کند و اطلاعات سفارش را به سیستم حسابداری منتقل کند.
این سیستمها لزوماً توسط یک شرکت یا حتی با یک زبان برنامهنویسی ساخته نشدهاند، اما میتوانند با یکدیگر ارتباط برقرار کنند. یکی از مهمترین ابزارهای این ارتباط API است.
API چیست؟
API مخفف عبارت Application Programming Interface یا رابط برنامهنویسی کاربردی است.
API مجموعهای از قوانین و مسیرها را مشخص میکند تا نرمافزارها بتوانند بدون نیاز به شناخت کامل ساختار داخلی یکدیگر ارتباط برقرار کنند.
API مثل یک قرارداد مشخص بین دو نرمافزار است: اگر درخواست را به شکل صحیح بفرستی، پاسخ مشخصی دریافت میکنی.
یک مثال ساده از API
فرض کنید در سایت خود میخواهید وضعیت آبوهوا را نمایش دهید.
منطقی نیست که خودتان شبکهای از ایستگاههای هواشناسی ایجاد کنید. در عوض میتوانید از یک سرویس هواشناسی درخواست اطلاعات کنید.
سایت فقط درخواست میکند: «وضعیت هوای این شهر را بده» و سرویس اطلاعات را برمیگرداند.
API چگونه کار میکند؟
در بیشتر APIهای وب، ارتباط از طریق HTTP انجام میشود.
یک نرمافزار درخواست ارسال میکند و سرور پس از بررسی آن پاسخ میدهد.
Request و Response چیست؟
هر ارتباط API معمولاً شامل یک درخواست و یک پاسخ است.
Request
- آدرس Endpoint
- نوع درخواست
- Header
- پارامترها
- اطلاعات ارسالی
Response
- Status Code
- اطلاعات نتیجه
- پیام خطا
- دادههای موردنیاز
برنامهنویس باید هر دو حالت موفق و ناموفق را مدیریت کند.
REST API چیست؟
REST یکی از رایجترین سبکهای طراحی API در وب است.
در یک REST API معمولاً منابع مختلف آدرسهای مشخصی دارند و عملیات با استفاده از متدهای HTTP انجام میشود.
برای مثال:
- /users
- /products
- /orders
- /payments
هرکدام از این Endpointها ممکن است برای دریافت، ثبت، ویرایش یا حذف اطلاعات استفاده شوند.
GET، POST، PUT و DELETE چه هستند؟
معمولاً برای دریافت اطلاعات استفاده میشود.
معمولاً برای ایجاد یا ارسال اطلاعات جدید استفاده میشود.
برای بروزرسانی اطلاعات موجود کاربرد دارند.
برای حذف یک منبع استفاده میشود.
JSON چیست و چرا در API زیاد دیده میشود؟
APIها برای انتقال اطلاعات نیاز به یک قالب مشخص دارند.
یکی از رایجترین قالبها JSON است.
فرض کنید API اطلاعات یک مشتری را برگرداند. از نظر مفهومی ممکن است اطلاعاتی مثل این وجود داشته باشد:
- نام مشتری
- شماره موبایل
- شناسه کاربر
- وضعیت حساب
JSON سبک است، خواندن آن ساده است و تقریباً تمام زبانهای برنامهنویسی مدرن بهراحتی با آن کار میکنند.
Status Code در API چیست؟
سرور علاوه بر داده، معمولاً یک کد وضعیت هم برمیگرداند.
مدیریت صحیح Status Codeها باعث میشود نرمافزار در هنگام خطا رفتار قابل پیشبینیتری داشته باشد.
احراز هویت API چگونه انجام میشود؟
بسیاری از APIها عمومی نیستند و فقط کاربران یا نرمافزارهای مجاز باید بتوانند از آنها استفاده کنند.
روشهای مختلفی برای احراز هویت وجود دارد:
API در دنیای واقعی کجا استفاده میشود؟
بسیاری از قابلیتهایی که در سایتها عادی به نظر میرسند، در پشت صحنه از API استفاده میکنند.
مثال: API درگاه پرداخت
وقتی کاربر روی دکمه پرداخت کلیک میکند، سایت میتواند از API درگاه پرداخت درخواست ایجاد تراکنش کند.
بعد از پرداخت، سایت دوباره از طریق API صحت تراکنش را بررسی میکند.
مثال: API پنل پیامکی
در یک سیستم ورود با OTP، نرمافزار ابتدا یک کد ایجاد میکند و سپس از API پنل پیامکی میخواهد آن را برای کاربر ارسال کند.
API چه ارتباطی با Front-End و Back-End دارد؟
در بسیاری از پروژههای مدرن، رابط کاربری و Backend از طریق API با یکدیگر ارتباط دارند.
Front-End
- نمایش رابط کاربری
- دریافت اطلاعات کاربر
- ارسال Request
- نمایش Response
Back-End
- پردازش درخواست
- ارتباط با دیتابیس
- کنترل دسترسی
- برگرداندن Response
امنیت API چرا اهمیت دارد؟
API در بسیاری از سیستمها مستقیماً به اطلاعات مهم و دیتابیس دسترسی دارد.
بنابراین امنیت آن بسیار مهم است.
- اعتبارسنجی ورودیها
- Authentication
- Authorization
- Rate Limiting
- استفاده از HTTPS
- ثبت Log
- مدیریت Token
API امن فقط بررسی نمیکند «چه کسی هستی»؛ باید بررسی کند «اجازه انجام چه کاری را داری».
Rate Limiting چیست؟
Rate Limiting یعنی محدود کردن تعداد درخواستهایی که یک کاربر یا برنامه در یک بازه زمانی مشخص میتواند به API ارسال کند.
این کار میتواند از:
- Spam
- Brute Force
- مصرف بیش از حد منابع
- سوءاستفاده از سرویس
جلوگیری کند.
Webhook چیست و چه تفاوتی با API دارد؟
در API معمولاً نرمافزار شما درخواست ارسال میکند.
اما در Webhook یک سرویس خارجی هنگام رخ دادن یک رویداد، خودش اطلاعات را به آدرس مشخصی در سیستم شما ارسال میکند.
برای مثال:
«پرداخت انجام شد؛ این هم اطلاعات تراکنش.»
Webhook برای رویدادهای لحظهای بسیار کاربردی است.
مستندات API چرا مهم است؟
API بدون مستندات مناسب برای توسعهدهنده تقریباً غیرقابل استفاده میشود.
مستندات خوب باید مشخص کند:
اتصال API در پروژههای اختصاصی
در پروژههای اختصاصی، API میتواند چند سیستم مختلف را به یکدیگر متصل کند.
برای مثال یک نرمافزار فروش میتواند همزمان به:
- درگاه پرداخت
- پنل پیامکی
- سیستم حسابداری
- سرویس حملونقل
- CRM
متصل باشد.
چه زمانی باید API اختصاصی بسازیم؟
اگر قرار باشد چند نرمافزار یا اپلیکیشن به دادههای یک سیستم دسترسی داشته باشند، ساخت API اختصاصی میتواند انتخاب مناسبی باشد.
مثلاً زمانی که:
API با Web Service چه تفاوتی دارد؟
این دو اصطلاح گاهی بهجای یکدیگر استفاده میشوند، اما دقیقاً یک مفهوم نیستند.
Web Service نوعی سرویس ارتباطی تحت شبکه است، در حالی که API مفهوم گستردهتری دارد.
در پروژههای وب امروزی، وقتی درباره REST API صحبت میکنیم، معمولاً منظورمان یک رابط تحت HTTP برای ارتباط سیستمهاست.
وقتی سیستمها با هم صحبت کنند، بسیاری از کارهای دستی حذف میشوند.
در WebMorteza اتصال API، توسعه وبسرویس، ارتباط درگاههای پرداخت، پنل پیامکی و سرویسهای مختلف در پروژههای اختصاصی پیادهسازی میشود.
سؤالات متداول درباره API
آیا API فقط برای سایتهای بزرگ است؟
خیر. حتی یک سایت کوچک ممکن است برای درگاه پرداخت، پیامک یا سرویسهای دیگر از API استفاده کند.
آیا استفاده از API نیاز به برنامهنویسی دارد؟
برای اتصال اختصاصی معمولاً بله، اما بعضی سیستمها افزونه یا ابزار آماده برای اتصال دارند.
REST API چیست؟
یکی از رایجترین معماریها برای طراحی APIهای تحت وب است که معمولاً از HTTP و متدهایی مثل GET و POST استفاده میکند.
آیا API میتواند ناامن باشد؟
بله. اگر احراز هویت، کنترل دسترسی، اعتبارسنجی داده و Rate Limiting صحیح انجام نشوند، API میتواند آسیبپذیر باشد.
آیا میتوان سایت و اپلیکیشن را با یک API متصل کرد؟
بله. این یکی از کاربردهای رایج API است و سایت و اپلیکیشن میتوانند از Backend مشترک استفاده کنند.
API زبان مشترک بین نرمافزارهاست.
از پرداخت و پیامک گرفته تا CRM، حسابداری و اپلیکیشن موبایل، API امکان ارتباط سیستمهای مختلف را فراهم میکند.
مهم نیست دو سیستم با چه تکنولوژی ساخته شده باشند؛ اگر قرارداد ارتباطی مشخصی داشته باشند، میتوانند اطلاعات را با یکدیگر ردوبدل کنند.
بسیاری از اتوماسیونهای حرفهای از جایی شروع میشوند که نرمافزارها بتوانند بدون دخالت انسان با یکدیگر ارتباط برقرار کنند.
گفتوگو درباره این مطلب
۰ دیدگاه