مقدمة إلى GraphQL
ما هو GraphQL؟
GraphQL هي لغة استعلام لواجهات برمجة التطبيقات (APIs) وبيئة تشغيل لتنفيذ هذه الاستعلامات باستخدام البيانات الموجودة لديك. تم تطويرها داخلياً من قبل فيسبوك في عام 2012 وتم إصدارها للعامة في عام 2015. توفر GraphQL وصفاً كاملاً ومفهوماً للبيانات في واجهة برمجة التطبيقات الخاصة بك، وتمنح العملاء القدرة على طلب ما يحتاجونه بالضبط ولا شيء أكثر، وتسهل تطوير واجهات برمجة التطبيقات بمرور الوقت.
GraphQL مقابل REST
لنقارن GraphQL مع واجهات برمجة تطبيقات REST التقليدية لفهم الاختلافات الرئيسية:
الاختلافات الرئيسية:
- نقطة نهاية واحدة: تستخدم GraphQL نقطة نهاية واحدة لجميع العمليات، بينما تستخدم REST نقاط نهاية متعددة
- استعلامات مرنة: يحدد العملاء بالضبط البيانات التي يحتاجونها، مما يتجنب جلب البيانات الزائدة أو الناقصة
- مكتوبة بقوة: تستخدم GraphQL نظام أنواع لتحديد مخطط واجهة برمجة التطبيقات
- لا حاجة للإصدارات: يمكن لواجهات برمجة تطبيقات GraphQL التطور دون إصدارات عن طريق إضافة حقول وأنواع جديدة
فوائد GraphQL
توفر GraphQL العديد من المزايا المقنعة على واجهات برمجة تطبيقات REST التقليدية:
- تحميل بيانات فعال: جلب موارد متعددة في طلب واحد، مما يلغي الحاجة إلى رحلات متعددة ذهاباً وإياباً
- لا جلب زائد: احصل فقط على البيانات التي تحتاجها، مما يقلل من استخدام النطاق الترددي ويحسن الأداء
- لا جلب ناقص: استرجاع جميع البيانات المطلوبة في طلب واحد، مما يتجنب استدعاءات API متعددة
- نظام أنواع قوي: واجهة برمجة تطبيقات موثقة ذاتياً مع التحقق المدمج ومعالجة الأخطاء
- تكرارات منتج سريعة: يمكن لفرق الواجهة الأمامية التكرار بسرعة دون انتظار تغييرات الواجهة الخلفية
- الاستبطان: الاستعلام عن المخطط نفسه لاكتشاف العمليات والأنواع المتاحة
التاريخ والتطور
تم إنشاء 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
تعد GraphQL خياراً ممتازاً عندما:
- يحتوي تطبيقك على متطلبات بيانات معقدة ومتداخلة
- تحتاج إلى دعم منصات عملاء متعددة (ويب، هاتف محمول، سطح مكتب)
- تريد تقليل طلبات الشبكة واستخدام النطاق الترددي
- يريد فريقك المرونة في جلب البيانات دون تغييرات مستمرة في الواجهة الخلفية
- أنت تبني منتجاً بمتطلبات متغيرة بسرعة
فكر في REST عندما:
- لديك متطلبات بيانات بسيطة ومباشرة
- تحتاج إلى آليات تخزين مؤقت HTTP مدمجة
- فريقك أكثر دراية بـ REST
- أنت تبني تطبيق CRUD بسيط
الخطوات التالية
في الدرس التالي، سنغوص في مخطط GraphQL ونظام الأنواع، الذي يشكل أساس كل واجهة برمجة تطبيقات GraphQL. ستتعلم كيفية تحديد الأنواع والحقول والعلاقات التي تصف نموذج البيانات الخاص بك.