API مخفف Application Programming Interface و به معنی رابط برنامهنویسی کاربردی است. API قراردادی میان دو جزء نرمافزاری است. این قرارداد میتواند یک تابع در کتابخانه، یک پروتکل شبکه یا API وب باشد و لزوماً به اینترنت یا JSON محدود نیست.
RESTful API چیست؟
REST مخفف Representational State Transfer است. یک RESTful API از منابع، URI، معنای روشهای HTTP، پاسخهای استاندارد و اصل Stateless بودن ارتباط HTTP به درستی استفاده میکند. REST با JSON مساوی نیست و GET / POST بهتنهایی API را RESTful نمیکنند.
نمونه API فروشگاه باورژن
GET /api/products?category=books HTTP/1.1
Host: baversion.com
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
{"data": [{"id": 12, "name": "Design Patterns"}]}
در این مثال دامنه باورژن صرفاً برای نمایش ساختار درخواست انتخاب شده است، نه اینکه وجود API واقعی در این مسیر تایید شده باشد.
اجزای قرارداد API
| مفهوم | مثال | نکته |
|---|---|---|
| Endpoint | /api/products/12 | مسیر دسترسی به منبع |
| HTTP Method | GET، POST | نوع عملیات درخواستی |
| HTTP Status Code | 200، 201، 404 | نتیجه پردازش |
| Request / Response Body | JSON یا انواع دیگر | ساختار داده قرارداد |
| Authentication | Bearer Token یا Cookie | تشخیص درخواستدهنده |
| Authorization | مجوز مشاهده یا تغییر سفارش | کنترل دسترسی به منبع |
| Versioning | /api/v1/orders | مدیریت تغییر قرارداد |
REST، GraphQL و gRPC در یک نگاه
| روش | ویژگی | مناسب برای |
|---|---|---|
| REST | منابع و قرارداد HTTP | بسیاری از سرویسهای وب |
| GraphQL | انتخاب ساختار داده موردنیاز توسط کلاینت | نیازهای منعطف داده |
| gRPC | قرارداد Protobuf و RPC | ارتباط سرویس به سرویس |
نکته فنی
در API عمومی باید Authentication، Authorization، اعتبارسنجی، Rate Limiting، صفحهبندی و مدیریت خطا را در طراحی قرارداد لحاظ کرد.
اصطلاحات مرتبط: رست API، رست، پروتکل انتقال ابرمتن، متدهای HTTP، کدهای وضعیت HTTP، احراز هویت API، نسخهبندی API، زبان پرسوجوی گرافکیوال، ریت لیمیتینگ، درگاه API.
برای تکمیل این بحث، صفحه نیازمندی فانکشنال را نیز ببینید.