واجهات GraphQL

مقدمة إلى GraphQL

15 دقيقة الدرس 1 من 35

ما هو GraphQL؟

GraphQL هي لغة استعلام لواجهات برمجة التطبيقات (APIs) وبيئة تشغيل لتنفيذ هذه الاستعلامات باستخدام البيانات الموجودة لديك. تم تطويرها داخلياً من قبل فيسبوك في عام 2012 وتم إصدارها للعامة في عام 2015. توفر GraphQL وصفاً كاملاً ومفهوماً للبيانات في واجهة برمجة التطبيقات الخاصة بك، وتمنح العملاء القدرة على طلب ما يحتاجونه بالضبط ولا شيء أكثر، وتسهل تطوير واجهات برمجة التطبيقات بمرور الوقت.

نقطة مهمة: GraphQL ليست تقنية قاعدة بيانات - إنها لغة استعلام لواجهة برمجة التطبيقات الخاصة بك يمكن أن تعمل مع أي قاعدة بيانات أو مصدر بيانات.

GraphQL مقابل REST

لنقارن GraphQL مع واجهات برمجة تطبيقات REST التقليدية لفهم الاختلافات الرئيسية:

<!-- REST API: نقاط نهاية متعددة --> GET /api/users/123 GET /api/users/123/posts GET /api/users/123/followers <!-- GraphQL: نقطة نهاية واحدة --> POST /graphql { user(id: "123") { name posts { title } followers { name } } }

الاختلافات الرئيسية:

  • نقطة نهاية واحدة: تستخدم GraphQL نقطة نهاية واحدة لجميع العمليات، بينما تستخدم REST نقاط نهاية متعددة
  • استعلامات مرنة: يحدد العملاء بالضبط البيانات التي يحتاجونها، مما يتجنب جلب البيانات الزائدة أو الناقصة
  • مكتوبة بقوة: تستخدم GraphQL نظام أنواع لتحديد مخطط واجهة برمجة التطبيقات
  • لا حاجة للإصدارات: يمكن لواجهات برمجة تطبيقات GraphQL التطور دون إصدارات عن طريق إضافة حقول وأنواع جديدة

فوائد GraphQL

توفر GraphQL العديد من المزايا المقنعة على واجهات برمجة تطبيقات REST التقليدية:

  1. تحميل بيانات فعال: جلب موارد متعددة في طلب واحد، مما يلغي الحاجة إلى رحلات متعددة ذهاباً وإياباً
  2. لا جلب زائد: احصل فقط على البيانات التي تحتاجها، مما يقلل من استخدام النطاق الترددي ويحسن الأداء
  3. لا جلب ناقص: استرجاع جميع البيانات المطلوبة في طلب واحد، مما يتجنب استدعاءات API متعددة
  4. نظام أنواع قوي: واجهة برمجة تطبيقات موثقة ذاتياً مع التحقق المدمج ومعالجة الأخطاء
  5. تكرارات منتج سريعة: يمكن لفرق الواجهة الأمامية التكرار بسرعة دون انتظار تغييرات الواجهة الخلفية
  6. الاستبطان: الاستعلام عن المخطط نفسه لاكتشاف العمليات والأنواع المتاحة
أفضل ممارسة: تعد GraphQL مفيدة بشكل خاص للتطبيقات ذات متطلبات البيانات المعقدة، وتطبيقات الهاتف المحمول ذات النطاق الترددي المحدود، والفرق ذات المطورين المنفصلين للواجهة الأمامية والخلفية.

التاريخ والتطور

تم إنشاء GraphQL بواسطة فيسبوك في عام 2012 لمعالجة تحديات بناء تطبيقات الهاتف المحمول الخاصة بهم. كان تطبيق فيسبوك للهاتف المحمول بحاجة إلى تحميل بنى بيانات معقدة ومتداخلة بكفاءة مع تقليل طلبات الشبكة. في عام 2015، أطلقت فيسبوك GraphQL كمصدر مفتوح، ومنذ ذلك الحين تم اعتمادها من قبل شركات مثل GitHub وShopify وTwitter وAirbnb.

الجدول الزمني:

  • 2012: تطور فيسبوك GraphQL داخلياً
  • 2015: إصدار مواصفات GraphQL والتطبيق المرجعي
  • 2016: تعلن GitHub عن واجهة برمجة تطبيقات GraphQL v4
  • 2018: تأسيس مؤسسة GraphQL تحت مؤسسة Linux
  • 2020+: اعتماد واسع النطاق عبر شركات التكنولوجيا الكبرى

نظام GraphQL البيئي

يتضمن نظام GraphQL البيئي مجموعة متنوعة من الأدوات والمكتبات:

  • مكتبات الخادم: Apollo Server، GraphQL Yoga، Express GraphQL، Mercurius
  • مكتبات العميل: Apollo Client، Relay، urql، graphql-request
  • أدوات التطوير: GraphQL Playground، Apollo Studio، GraphiQL
  • مولدات الكود: GraphQL Code Generator، Apollo Codegen
  • أدوات المخطط: GraphQL Tools، Nexus، Pothos، TypeGraphQL
مهم: بينما تحل GraphQL العديد من المشاكل، فهي ليست حلاً سحرياً. إنها تضيف تعقيداً ومنحنى تعلم، وقد تكون مبالغة لواجهات برمجة تطبيقات CRUD البسيطة.

متى تستخدم GraphQL

تعد GraphQL خياراً ممتازاً عندما:

  • يحتوي تطبيقك على متطلبات بيانات معقدة ومتداخلة
  • تحتاج إلى دعم منصات عملاء متعددة (ويب، هاتف محمول، سطح مكتب)
  • تريد تقليل طلبات الشبكة واستخدام النطاق الترددي
  • يريد فريقك المرونة في جلب البيانات دون تغييرات مستمرة في الواجهة الخلفية
  • أنت تبني منتجاً بمتطلبات متغيرة بسرعة

فكر في REST عندما:

  • لديك متطلبات بيانات بسيطة ومباشرة
  • تحتاج إلى آليات تخزين مؤقت HTTP مدمجة
  • فريقك أكثر دراية بـ REST
  • أنت تبني تطبيق CRUD بسيط
تمرين: فكر في مشاريعك الحالية أو السابقة. حدد سيناريو واحداً حيث كانت GraphQL ستكون مفيدة على REST، وسيناريو واحداً حيث كان REST سيكون أبسط. ضع في اعتبارك عوامل مثل تعقيد البيانات ومتطلبات العميل وخبرة الفريق.

الخطوات التالية

في الدرس التالي، سنغوص في مخطط GraphQL ونظام الأنواع، الذي يشكل أساس كل واجهة برمجة تطبيقات GraphQL. ستتعلم كيفية تحديد الأنواع والحقول والعلاقات التي تصف نموذج البيانات الخاص بك.