ما هو API؟ — دليل مصوّر

يشير اختصار API إلى واجهة برمجة التطبيقات (Application Programming Interface). وهي طريقة يتواصل بها برنامجان مع بعضهما عبر الإنترنت.

تشبيه المطعم

تخيّل مطعمًا:

المطعم API الويب
أنت (العميل) تطبيق الجوال الخاص بك
النادل API
المطبخ الخادم (الواجهة الخلفية)
قائمة الطعام توثيق API
طلبك الطلب
طعامك الاستجابة

أنت لا تدخل إلى المطبخ لتطبخ بنفسك، بل تخبر النادل بما تريد فيأتيك به. وهكذا يعمل API تمامًا — يرسل تطبيقك طلبًا، ويعيد الخادم استجابة.

نموذج العميل والخادم

┌─────────┐    Request (HTTP)    ┌─────────┐
│  Client  │ ──────────────────> │  Server │
│ (mobile) │                     │ (Flask) │
│          │ <────────────────── │         │
└─────────┘    Response (JSON)   └─────────┘
  • العميل: تطبيق الجوال الخاص بك المبني بـ React Native (أو المتصفح، أو خادم آخر)
  • الخادم: الواجهة الخلفية المكتوبة بـ Flask، وهي التي تعالج الطلبات وتتواصل مع قاعدة البيانات

طرق HTTP

حين يتواصل تطبيقك مع خادم، فإنه يستخدم طرق HTTP ليصف ما يريد فعله:

الطريقة الإجراء مثال
GET قراءة البيانات جلب كل رسائل الدردشة
POST إنشاء بيانات إرسال رسالة جديدة
PUT/PATCH تحديث البيانات تعديل رسالة
DELETE حذف البيانات حذف رسالة

دورة الطلب والاستجابة

حين يرسل تطبيق الجوال رسالة:

1. يكتب المستخدم "Hello!" ويضغط على إرسال
2. يرسل تطبيق الجوال طلب POST إلى http://server:5000/chat
   مع جسم الطلب: {"message": "Hello!"}
3. تستقبل الواجهة الخلفية Flask الطلب
4. تحفظ الواجهة الخلفية الرسالة في قاعدة بيانات SQLite
5. تستدعي الواجهة الخلفية OpenAI API للحصول على رد
6. تحفظ الواجهة الخلفية رد الذكاء الاصطناعي في قاعدة البيانات
7. تعيد الواجهة الخلفية JSON: {"reply": "Hi there! How can I help?"}
8. يستقبل تطبيق الجوال الاستجابة ويعرضها

ما هو JSON؟

JSON (JavaScript Object Notation) هي صيغة تُنسَّق بها البيانات عند إرسالها بين العميل والخادم.

{
    "id": 1,
    "message": "Hello!",
    "sender": "user",
    "timestamp": "2025-01-15T10:30:00Z"
}

إنه يشبه قاموس Python أو كائن JavaScript، ويمكن لكلتا اللغتين التحويل من JSON وإليه بسهولة.

ما هي نقطة النهاية (endpoint)؟

نقطة النهاية هي مزيج محدد من عنوان URL وطريقة HTTP:

نقطة النهاية ما الذي تفعله
GET /api/messages جلب كل الرسائل
POST /api/chat إرسال رسالة والحصول على رد الذكاء الاصطناعي
DELETE /api/messages/5 حذف الرسالة ذات المعرّف 5

رموز الحالة

تتضمن كل استجابة رمز حالة يخبرك إن نجح الطلب أم لا:

الرمز المعنى
200 موافق — نجاح
201 أُنشئ — تم إنشاء مورد بنجاح
400 طلب غير صالح — أرسلت شيئًا خاطئًا
404 غير موجود — عنوان URL هذا غير موجود
500 خطأ في الخادم — حدث خلل ما على الخادم

ملخص بصري

┌──────────┐         ┌──────────┐         ┌──────────┐
│  Mobile   │  POST   │  Flask   │  POST   │  OpenAI  │
│   App    │ ──────> │  Server  │ ──────> │   API    │
│          │         │          │         │          │
│  Send    │  JSON   │  Save to │  JSON   │ Generate │
│ "Hello!" │         │  SQLite  │         │  reply   │
│          │ <────── │          │ <────── │          │
│          │  JSON   │          │  JSON   │          │
│ Display  │  reply  │  Send    │  reply  │          │
│  reply   │         │  back    │         │          │
└──────────┘         └──────────┘         └──────────┘

الخلاصة

API ليس سوى طريقة منظمة لتتواصل البرامج مع بعضها. يرسل تطبيقك طلبًا، فيعالجه الخادم، ثم يعيد إليه استجابة. هذا كل شيء.