API هو اختصار Application Programming Interface، أي واجهة برمجة التطبيقات. هو عقد بين برنامجين: يحدد ماذا تطلب، وبأي صيغة، وماذا تحصل بالمقابل. عندما يتحدث الناس عن API اليوم فهم غالباً ما يقصدون واجهة تعمل عبر HTTP وتتبادل البيانات بصيغة JSON.
لماذا يهمك؟
تقريباً كل شيء يتم بناؤه اليوم يقوم على واجهات برمجية: الدفع الإلكتروني (Stripe)، الخرائط (Google Maps)، إرسال الرسائل، خدمات الذكاء الصنعي، وحتى تطبيق الجوال الذي يجلب بياناته من المخدم. من يفهم API يستطيع ربط أي خدمتين تقريباً في العالم ببعضهما.
كيف يعمل؟
الآلية أبسط مما تبدو:
- الطلب (Request): يرسل العميل طلب HTTP يتكون من فعل (مثل
GETأوPOST)، ومسار (مثلhttps://api.github.com/repos/WordPress/gutenberg)، وترويسات تحمل معلومات إضافية مثل نوع المحتوى المطلوب. - المعالجة: الخادم يقرأ الطلب، ينفذ المطلوب (يجلب بيانات، ينفذ عملية دفع…).
- الاستجابة (Response): يعيد الخادم رمز حالة (مثل
200للنجاح، أو401لغير المصرح له، أو404لغير الموجود) مع جسم الاستجابة، وهو غالباً نص JSON.
مثال عملي
جلب معلومات مستودع من GitHub بجافاسكربت عبر واجهة GitHub REST البرمجية (يعمل هذا النص البرمجي كما هو في Node أو المتصفح):
const res = await fetch("https://api.github.com/repos/WordPress/gutenberg");
const repo = await res.json();
console.log(repo.full_name, repo.stargazers_count);
// WordPress/gutenberg 11740
وبسطر واحد من سطر الأوامر:
curl -s https://api.github.com/repos/WordPress/gutenberg
وستحصل على استجابة JSON كاملة، مقتطف منها:
{
"full_name": "WordPress/gutenberg",
"stargazers_count": 11740,
"language": "JavaScript",
...
}
لاحظ أنك لم تكتب أي نص برمجي في جهة الخادم، فقط استهلكت عقداً جاهزاً موثقاً من قبل جهة أخرى على خوادمها.
متى تبني API ومتى تتجنبه؟
تبنى الواجهة البرمجية عندما:
- لديك أكثر من عميل يستهلك البيانات نفسها (موقع، تطبيق جوال، شركاء خارجيون).
- تريد فصل الواجهة الأمامية عن الخلفية فصلاً نظيفاً.
- المنتج نفسه عبارة عن خدمة يستهلكها مطورون آخرون.
و يجب تجنب بناؤها عندما:
- يقوم موقعك يعرض محتوى فقط ويكفي توليد الصفحات على الخادم، فلا تضف طبقة لا يحتاجها أحد.
القاعدة: لا تبنِ API لأن الجميع يبنونه، بل لأن مستهلكاً ثانياً موجود فعلاً.
مصطلحات ذات صلة
- ما هو JWT؟: رمز يستخدم غالباً في مصادقة الطلبات الموجهة إلى واجهة برمجية.
- ما هو دوكر؟: تتحدث خدماتك داخل الحاويات مع العالم عبر واجهات برمجية.
- ما هو LLM؟: يتواصل تطبيقك مع النموذج اللغوي عبر واجهة برمجية.
- ما هو RAG؟: يمكن أن يكون استدعاء واجهة برمجية مساراً للاسترجاع.