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

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

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

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

مثال 2. إخراج الخاصية المحددة فقط.

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