في السنوات الأخيرة، رأيت كثيرًا لغة تُسمى GraphQL. فما هي GraphQL؟ وما هي سيناريوهات الاستخدام؟ هذا الدليل التعليمي سيقدم لك أساسيات GraphQL، لذا إذا كنت ترغب في معرفة المزيد عن GraphQL، لا تفوت ذلك.
ما هي GraphQL
GraphQL هي لغة استعلام ومحرك تشغيل من جهة الخادم لواجهات برمجة التطبيقات (APIs). توفر مواصفة كاملة لاستعلامات واجهة برمجة التطبيقات، مما يمكّن الخوادم من إعادة البيانات الضرورية فقط دون تكرار. على عكس واجهات برمجة التطبيقات RESTful، تتطلب طلبات GraphQL عددًا أقل من الطلبات وتوفر للمطورين مزيدًا من اليقين بشأن النتائج المعادة.
سيناريوهات استخدام GraphQL
يود المطورون العمل بشكل أسرع وأكثر كفاءة، ونظام النوع في GraphQL يسمح لهم بتحديد الحقول الدقيقة التي يحتاجونها من الخادم لتناسب نموذج بيانات تطبيقهم. تستمر GraphQL في أن تصبح أكثر شيوعًا، بما في ذلك:
- تصميم واجهات برمجة التطبيقات مع هياكل بيانات معقدة: يمكن أن يكون تصميم واجهات برمجة التطبيقات بهياكل بيانات معقدة تحديًا بالنسبة لواجهات برمجة التطبيقات RESTful. ومع ذلك، يُسهل GraphQL تصميم واجهات برمجة التطبيقات بهياكل بيانات معقدة لأن هيكل البيانات المطلوب من العميل يمكن تحديده بوضوح.
- تطوير تطبيقات موبايل وتطبيقات الصفحة الواحدة (SPAs): غالبًا ما تحتاج تطبيقات الموبايل وSPAs إلى استرداد البيانات من عدة نقاط نهاية لواجهة برمجة التطبيقات. ومع ذلك، مع GraphQL، يمكنك الحصول على البيانات المطلوبة من نقطة نهاية واحدة لواجهة برمجة التطبيقات، مما يقلل من حركة المرور الشبكية ويحسن الأداء.
- فصل الواجهة الأمامية والخلفية: يمكّن GraphQL فصل الواجهة الأمامية والخلفية، مما يتيح لكلا الفريقين التطور بشكل مستقل. هذا يسرع من عملية التطوير ويحسن إنتاجية الفريق.
- استعلامات مخصصة والمصادقة: يسمح لك GraphQL بتخصيص البيانات التي يحتاجها العملاء. كما يوفر GraphQL ميزات مصادقة وتفويض مرنة، مما يجعله مناسبًا للتطبيقات التي تتطلب أمانًا عاليًا.
بشكل عام، يُعتبر GraphQL مفيدًا في مجموعة متنوعة من الحالات، مثل تصميم واجهات برمجة التطبيقات مع هياكل بيانات معقدة، وتطوير تطبيقات موبايل عالية الأداء وSPAs، وفصل الواجهة الأمامية والخلفية.
تاريخ GraphQL
تم إنشاء GraphQL بواسطة فيسبوك في عام 2012 كمشروع داخلي لتعزيز جلب البيانات ومعالجتها لتطبيقاتهم المحمولة.
في عام 2015، أصدرت فيسبوك GraphQL للجمهور، مما أدى إلى تبني واسع النطاق بين شركات التكنولوجيا الكبرى مثل GitHub وTwitter. وقد أصبحت قدراته الاستعلامية الواضحة والمرنة جزءًا أساسيًا من نظام التطوير الحديث.
في عام 2018، تم تأسيس مؤسسة GraphQL لدعم تطويره المفتوح وحوكمته المدفوعة من المجتمع، مما عزز مكانته كأداة قوية لبناء واجهات برمجة تطبيقات فعالة. اليوم، تستمر GraphQL في الازدهار وإحداث ثورة في طريقة تصميم المطورين وتفاعلهم مع واجهات برمجة التطبيقات.
مواصفات GraphQL: المخطط، الحقول، الاستعلام، والمعايير
يحدد مخطط GraphQL الأنواع، والاستعلامات، والتغييرات، وحقول الاشتراك المتاحة في واجهة برمجة تطبيقات GraphQL. إليك تعريفات الشروط الأساسية:
- أنواع الكائنات: تُستخدم لتحديد حقول الكائنات في نموذج البيانات. على سبيل المثال، يحتوي كائن المستخدم على حقول مثل الاسم والبريد الإلكتروني.
- الحقول: تحدد أنواع البيانات التي يمكن لخادم GraphQL استرجاعها عند تنفيذ استعلام. تنتمي الحقول عادةً إلى أنواع الكائنات ولكن يُحَدِد بعضها أحيانًا كأنواع عددية. تشمل الأنواع العددية السلاسل، والأعداد الصحيحة، والأعداد العشرية، والقيم البولينية، والمعرفات، إلخ.
- الاستعلام: يُحدد نقطة الدخول للاستعلامات في واجهة برمجة تطبيقات GraphQL. تُستخدم الاستعلامات لاسترجاع البيانات من خادم GraphQL.
- التغيير: يُحدد نقطة الدخول للتغييرات في واجهة برمجة تطبيقات GraphQL. تُستخدم التغييرات لتغيير البيانات على خادم GraphQL.
- الاشتراك: يُحدد نقطة الدخول للاشتراك في واجهة برمجة تطبيقات GraphQL. تُستخدم الاشتراكات لتلقي تحديثات البيانات في الوقت الحقيقي من خادم GraphQL.
المخططات
يُستخدم نموذج البيانات لتحديد هيكل البيانات للكيانات الكائنية والعلاقات بينها. على سبيل المثال، يحدد أي السمات التي يملكها كائن ما. تمثل الصورة التالية نموذج بيانات كامل، والذي يحدد استعلامًا لاستعلام البيانات وكيانين للعودة، "Header" و"Query".

الحقل
في استعلامات GraphQL، يُعيد الخادم هيكل البيانات المطلوب إلى العميل مع نتائج دقيقة لكل حقل مطلوب. تتطابق حقول الاستجابة من الخادم مع الحقول المطلوبة من العميل. كما هو موضح في الصورة التالية، بناءً على المثال المحدد أعلاه، طُلب حقلان، وعادت نتائج الحقلين. الأداة المرجعية المستخدمة هي APOLLO.

المعايير
عند استعلام البيانات، يمكن تمرير المعايير لتحديد معايير الاستعلام. على سبيل المثال، في الصورة التالية، يتم استعلام كائن الشخص باستخدام معلمة id لاسترجاع بيانات السمات ذات الصلة. يمكن إدخال id الفعلي في قسم المتغيرات أدناه للاستعلام. الأداة المرجعية المستخدمة هي APOLLO.

حالات التشغيل
المثال 1: إخراج نتائج بيانات كاملة بناءً على نموذج البيانات.

المثال 2. إخراج السمة المختارة فقط.

مزايا وعيوب GraphQL
بعد فهم بعض المفاهيم الأساسية واستخدام GraphQL، دعنا نحلل باختصار مزايا وعيوب استخدام GraphQL.
مزايا GraphQL
- يمكن لـ GraphQL استعلام جميع البيانات باستخدام مصدر بيانات واحد فقط. يمكن لجميع الطلبات الوصول إلى نقطة نهاية واحدة فقط للخادم.
- تتطابق الاستجابة من GraphQL بدقة مع الحقول المطلوبة من العميل، مما يقلل من التداخل بين العميل والخادم.
- يدعم GraphQL تعريف ونقل جميع أنواع البيانات، بما في ذلك نقل المعلمات في الطلبات.
- يمتلك GraphQL الآن العديد من منصات الأدوات مفتوحة المصدر، والإضافات، والامتدادات.
عيوب GraphQL
- قد يحتاج المطورون المألوفون بطلبات RESTful إلى قضاء بعض الوقت في تعلم GraphQL.
- بالنسبة لتطوير الواجهات RESTful، قد يحتاج مطورو الخادم إلى قضاء المزيد من الوقت في تطوير نماذج بيانات سهلة الصيانة.
يمتلك GraphQL العديد من الميزات المثيرة للاهتمام وعمق الاستخدام. هنا نوصي بتجربة الأداة المرجعية APOLLO، فهي مناسبة للاستكشاف.
بالإضافة إلى ذلك، تتكامل Apidog حاليًا مع ميزة تصحيح GraphQL، ونرحب أيضًا بتجربة Apidog.
