مرجع سريع

ورقة مساعدة للغة الاستعلام GraphQL

مرجع سريع لـ GraphQL: صياغة الاستعلامات والمعاملات والأسماء المستعارة والقطع، والتبديلات (Mutations)، وتعريفات مخطط SDL.

· تاريخ النشر

GraphQL هي لغة استعلام لواجهات برمجة التطبيقات (APIs) وبيئة تشغيل لتنفيذ تلك الاستعلامات باستخدام بياناتك الحالية.

الاستعلامات (Queries)

الاستعلام الأساسي والاستجابة

{ status }

JSON Response:

{
  "data": {
    "status": "available"
  }
}

الكائنات المتداخلة (Nested Objects)

{
  hero {
    name
    height
  }
}

القوائم والمصفوفات (Lists)

{
  friends {
    name
  }
}

المعاملات (Arguments)

{
  hero(id: "1000") {
    id
    name
  }
}

الأسماء المستعارة (Aliases)

{
  luke: hero(id: "1000") {
    name
  }
  han: hero(id: "1001") {
    name
  }
}

أسماء العمليات والمتغيرات (Variables)

Query Definition:

query FindHero($id: String!) {
  hero(id: $id) {
    name
  }
}

Variables Payload (JSON):

{
  "id": "1000"
}

التبديلات والتعديلات (Mutations)

mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {
  createReview(episode: $ep, review: $review) {
    stars
    commentary
  }
}

القطع المضمنة للاستعلامات المتعددة (Inline Fragments)

{
  search(q: "john") {
    id
    ... on User {
      name
    }
    ... on Comment {
      body
      author {
        name
      }
    }
  }
}

التشغيل عبر بروتوكول HTTP

طلب GET عبر fetch

fetch('https://api.example.com/graphql?query={me{name}}')

طلب POST عبر fetch

fetch('https://api.example.com/graphql', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    query: 'query GetHero($id: String!) { hero(id: $id) { name } }',
    variables: { id: '1000' }
  })
})

لغة تعريف المخطط (Schema Definition Language - SDL)

الأنواع الأساسية

type Query {
  me: User
  users(limit: Int): [User]
}

type User {
  id: ID!
  name: String
}

الأنواع القياسية المدمجة (Scalar Types)

النوع القياسي الوصف
Int عدد صحيح 32-بت ذو إشارة
Float قيمة فاصلة عائمة مزدوجة الدقة
String سلسلة محارف مشفرة بـ UTF-8
Boolean قيمة منطقية true أو false
ID معرف فريد يتم تمثيله كنص

الكلمات المفتاحية لتعريف الأنواع

الكلمة المفتاحية الوصف
type نوع كائن يمثل مجموعة من الحقول
scalar نوع قياسي أساسي مخصص
interface نوع مجرد يحدد مجموعة حقول يجب تطبيقها
union نوع مجرد يجمع بين عدة أنواع كائنات متميزة
enum تعداد لقيم نصية مسموح بها ومحددة
input كائن معقد يتم تمريره كمعامل إلى العمليات

معدلات الأنواع (Type Modifiers)

المعدل الوصف
String نص اختياري يقبل القيمة الفارغة (Nullable)
String! نص إلزامي غير قابل للفراغ (Non-nullable)
[String] قائمة اختيارية تحتوي على نصوص اختيارية
[String]! قائمة إلزامية تحتوي على نصوص اختيارية
[String!]! قائمة إلزامية تحتوي على نصوص إلزامية

الواجهات (Interfaces)

interface Entity {
  id: ID!
}

type User implements Entity {
  id: ID!
  name: String
}

التعدادات (Enums)

enum Direction {
  NORTH
  EAST
  SOUTH
  WEST
}

الاتحادات (Unions)

union SearchResult = Human | Droid | Starship

type Query {
  search(text: String): [SearchResult]
}

المراجع والتوثيق

موضوعات ذات صلة