تخطَّ إلى المحتوى

🔌 شرح REST APIs

مقدمة في GraphQL

الدرس 26 من 29· ⏱ 2 دقائق قراءة

ما هو GraphQL؟

GraphQL هي لغة استعلام (Query Language) لتطبيقات الواجهات البرمجية (APIs)، طوّرتها Meta (فيسبوك) عام 2012 ونشرتها كمصدر مفتوح عام 2015.

الفكرة الأساسية:

  • العميل (Client) يحدد بالضبط البيانات التي يحتاجها.
  • الخادم (Server) يُرجِع نفس البنية التي طلبها العميل — لا زيادة ولا نقصان.

الفرق بين REST و GraphQL

RESTGraphQL
نقاط نهاية (Endpoints) متعددة لكل موردنقطة نهاية واحدة /graphql
إما ترجع كامل الحقول أو تضمين حقول إضافيةالعميل يحدد الحقول المطلوبة
Over-fetching (جلب بيانات زائدة) و Under-fetching (جلب بيانات ناقصة)يجلب بالضبط ما يُطلب
الإصدارات (v1, v2...) غالباًلا حاجة للإصدارات — يُضاف الحقل الجديد بجانب القديم
// REST — `/api/users/1` يُرجع كل الحقول حتى لو احتجنا الاسم فقط
GET /api/users/1
// Response: { id, name, email, address, phone, ... }

// GraphQL — نطلب الاسم فقط
query {
  user(id: 1) {
    name
  }
}
// Response: { "data": { "user": { "name": "أحمد" } } }

الاستعلامات الأساسية (Queries)

Query بسيط

query {
  users {
    id
    name
    email
  }
}

Query مع متغيرات (Variables)

query GetUser($id: ID!) {
  user(id: $id) {
    name
    posts {
      title
    }
  }
}

تمرير المتغيرات

{
  "id": "1"
}

المزايا

  1. مرونة تامة — العميل يتحكم بالشكل النهائي للبيانات.
  2. كفاءة عالية — لا Over-fetching أو Under-fetching.
  3. نظام أنواع قوي (Type System) — كل شيء مُعرّف مسبقاً عبر Schema.
  4. توثيق تلقائي (Introspection) — أدوات مثل GraphiQL و Apollo Studio.

العيوب

  1. تعقيد إضافي — يحتاج Schema و Resolvers.
  2. مشاكل أداء — استعلامات متداخلة بعمق قد تثقل الخادم.
  3. التخزين المؤقت (Caching) — أصعب من REST لأن كل الطلبات تذهب إلى نقطة نهاية واحدة.
  4. رفع الملفات — ليس مدمجاً في البروتوكول.

⚠️ GraphQL ليس بديلاً كاملاً عن REST. لكلٍّ منهما مكانه.

خلاصة

GraphQL يمنح العميل تحكّماً كاملاً بالبيانات التي يجلبها، مما يقلل حجم الاستجابة ويسرّع التطبيقات. لكنه يأتي بتعقيد إضافي في الإعداد والصيانة.

🎯 التالي: GraphQL — Schema و Resolvers

شرح مقدمة في GraphQL — REST APIs بالعربي
مقدمة في GraphQLREST APIs بالعربي · The Code Fix

📚 لمزيد من التعمّق في REST APIs، راجِع توثيق HTTP على MDN.

هل كان هذا الدرس مفيدًا؟