أولاً: ما هي الـ API؟
API اختصار لـ:
Application Programming Interface
واجهة برمجية للتواصل بين “شيئين”:
- برنامج يتواصل مع برنامج ثاني
- فرونت إند يتواصل مع باك إند
- تطبيق موبايل يتواصل مع سيرفر
- أو حتى كودك يتواصل مع مكتبة جاهزة
فـ API كلمة عامّة جدًا، مش مرتبطة بالويب فقط.
أمثلة بسيطة:
- مكتبة في جافاسكربت:
لما تستخدمMath.random()
هذا جزء من API محرك جافاسكربت. - متصفح الويب:
window.localStorage– هذا API يوفّره لك المتصفح للتخزين المحلي. - Web API (http):
لما تكتب في React:axios.get("https://api.example.com/users")هذا تستدعي Web API (واجهة برمجية عبر HTTP).
إذًا:
API = أي طريقة منظمة تخليك تتواصل مع نظام/كود آخر.
ثانياً: ما هي REST API؟
REST اختصار لـ:
Representational State Transfer
هو أسلوب / نمط تصميم (Architecture Style) لبناء Web APIs باستخدام HTTP.
يعني:
REST API = نوع معيّن من الـ Web API يتبع قواعد معيّنة اسمها REST.
مو كل API على الويب يعتبر REST،
لكن كل REST API هو API (زي مربع ومستطيل: كل مربع مستطيل، لكن مو كل مستطيل مربع).
أهم أفكار REST (بشكل مبسّط للمبتدئين)
1️⃣ كل شيء يُعتبر “موارد” (Resources)
الموارد = أشياء في النظام:
/users→ المستخدمين/posts→ المقالات/courses→ الكورسات/students→ الطلاب … إلخ.
كل مورد له URI واضح:
- جميع المستخدمين:
GET /users - مستخدم واحد:
GET /users/5
2️⃣ استخدام الـ HTTP Methods بشكل منطقي
في REST نستغل verbs اللي في HTTP:
GET→ قراءة بيانات (ما يغيّر شيء)POST→ إنشاء جديدPUT→ تعديل كاملPATCH→ تعديل جزئيDELETE→ حذف
مثال على REST API للكورسات:
| العملية | الـ method | الـ URL |
|---|---|---|
| جلب كل الكورسات | GET | /courses |
| جلب كورس معيّن | GET | /courses/10 |
| إنشاء كورس جديد | POST | /courses |
| تعديل كورس بالكامل | PUT | /courses/10 |
| تعديل جزء من كورس | PATCH | /courses/10 |
| حذف كورس | DELETE | /courses/10 |
لو API ما يمشي على هذا الأسلوب، غالبًا ليس RESTful بالكامل.
3️⃣ Stateless (بدون حفظ حالة على السيرفر)
- كل طلب من العميل للسيرفر يحمل كل المعلومات اللي يحتاجها السيرفر لفهمه:
- توكن، ID، بيانات…
- السيرفر ما يعتمد على إنه “فاكر” جلسة قديمة في الذاكرة لكل مستخدم.
هذا يسهل التوسّع (Scalability).
4️⃣ استخدام تنسيقات قياسية للبيانات (غالبًا JSON)
مثلاً ردّ REST API:
{
"id": 1,
"title": "Learn React",
"body": "React basics...",
"userId": 5
}JavaScriptثالثاً: إذًا… ما الفرق عمليًا بين API و REST API؟
API (بشكل عام):
- مفهوم واسع.
- ممكن تكون:
- مكتبة جافاسكربت
- دوال في نظام التشغيل
- WebSocket API
- SOAP API
- GraphQL API
- REST API
- مو مرتبط ببروتوكول معين أو شكل معيّن.
REST API:
- نوع محدّد من Web API (يعمل فوق HTTP).
- يتبع مبادئ REST:
- موارد + URIs واضحة
- استخدام HTTP methods بشكل منطقي (GET/POST/PUT/DELETE…)
- غالبًا يرجع JSON
- Stateless
رابعاً: أمثلة تفرّق لك الصورة
🔹 مثال على Web API غير REST
رابط مثل:
POST /doAction
Body: { "operation": "getUser", "id": 5 }JavaScriptأو:
POST /users/getAll
POST /users/deleteUserJavaScriptهنا:
- كل شيء يتم بـ
POST - الـ URLs أفعال (getAll, deleteUser)
- هذا يعمل كـ API لكنه مو RESTful.
🔹 مثال على REST API أنظف
GET /users → رجّع كل المستخدمين
GET /users/5 → رجّع المستخدم 5
POST /users → أنشئ مستخدم جديد
DELETE /users/5 → احذف المستخدم 5JavaScriptهنا:
- الـ URLs أسماء موارد (users).
- الأفعال في HTTP method نفسه، مو في الـ URL.
- هذا نسميه RESTful API.
خامساً: في كلام المطوّرين اليومي
كثير ناس تقول:
“عملت API باللارافيل”
وتقصد غالبًا REST API أو شيء قريب منه.
ففي الاستخدام اليومي:
- كلمة API غالبًا يقصدوا بها Web API.
- وREST API يقصدوا بها Web API لكن مصمم وفق REST.
لكن لو نتكلم بالمعنى الدقيق:
- API = مصطلح عام.
- REST API = نوع محدد من API (Web + REST style).
لو تحب بعدها أقدر:
- أوريك كيف تصمم REST API بسيط في Laravel لمسار
/posts. - أو كيف تستهلك REST API من React باستخدام Axios (GET/POST/PUT/DELETE) كتصوّر كامل للي تعلمته.