مرحبًا يا من هناك! إذا كنت في عالم واجهات برمجة التطبيقات (APIs)، فمن المحتمل أنك سمعت عن كل من واجهات برمجة تطبيقات GraphQL وREST. أنا أحد موردي واجهات برمجة التطبيقات (APIs)، وقد رأيت بنفسي كيف تعمل هاتان التقنيتان. في هذه المدونة، سأقوم بتوضيح كيفية اختلاف GraphQL عن REST APIs، ولماذا قد يهمك ذلك.
أولاً، دعونا نتحدث عن REST APIs. REST، الذي يرمز إلى نقل الحالة التمثيلية، كان موجودًا منذ فترة طويلة وأصبح المعيار الأساسي لإنشاء واجهات برمجة تطبيقات الويب. إنه يعتمد على بنية بسيطة جدًا. لديك موارد، تشبه أجزاء من البيانات أو الخدمات، وتتفاعل مع هذه الموارد باستخدام أساليب HTTP القياسية مثل GET وPOST وPUT وDELETE.
على سبيل المثال، إذا كنت أحد موردي واجهات برمجة التطبيقات مثلي، وتريد إرجاع قائمة المنتجات إلى العميل، فمن المحتمل أن يكون لديك نقطة نهاية مثل/منتجات. سيرسل العميل طلب GET إلى نقطة النهاية هذه، وفي المقابل سيحصل على قائمة بالمنتجات. إنها طريقة مباشرة للعمل، ومن السهل فهمها وتنفيذها. عادةً ما يتم إرجاع البيانات بتنسيق مثل JSON أو XML.
إحدى المزايا الرئيسية لواجهات REST APIs هي أنها صديقة جدًا لذاكرة التخزين المؤقت. نظرًا لأن الطلبات تعتمد على عناوين URL وأساليب HTTP القياسية، يمكن للمتصفحات والخوادم الوسيطة تخزين الاستجابات بسهولة. يمكن أن يؤدي ذلك إلى تحسين الأداء بشكل كبير، خاصة بالنسبة للبيانات التي لا تتغير بشكل متكرر. على سبيل المثال، إذا كانت لديك واجهة برمجة تطبيقات توفر معلومات عامة عن شركتك، مثل عنوانها وتفاصيل الاتصال بها، فيمكن تخزين هذه الاستجابات مؤقتًا حتى لا تضطر الطلبات اللاحقة إلى الوصول إلى الخادم مرة أخرى.
ومع ذلك، فإن واجهات برمجة تطبيقات REST لديها أيضًا بعض القيود. إحدى المشكلات الكبيرة هي الإفراط في جلب البيانات أو نقص جلبها. لنفترض أن العميل يحتاج فقط إلى اسم المنتج وسعره، ولكن/منتجاتتقوم نقطة النهاية بإرجاع مجموعة كاملة من المعلومات الأخرى مثل وصف المنتج وتاريخ التصنيع والمراجعات. وهذا أمر مبالغ فيه، ويمكن أن يؤدي إلى نقل بيانات غير ضرورية وبطء الأداء، خاصة على الأجهزة المحمولة ذات النطاق الترددي المحدود.
على الجانب الآخر، يحدث الجلب الناقص عندما يحتاج العميل إلى بيانات أكثر مما توفره نقطة نهاية واحدة. على سبيل المثال، إذا كان العميل يحتاج إلى كل من معلومات المنتج ومراجعات العملاء ذات الصلة، فقد يضطر إلى تقديم طلبات متعددة إلى نقاط نهاية مختلفة، الأمر الذي قد يستغرق وقتًا طويلاً ويضيف أيضًا تعقيدًا إلى التعليمات البرمجية.
الآن، دعنا نبدل التروس ونتحدث عن GraphQL. تم تطوير GraphQL بواسطة Facebook وهي لغة استعلام لواجهات برمجة التطبيقات. ما يجعله مختلفًا عن REST هو أنه يمنح العميل قدرًا أكبر من التحكم في البيانات التي يتلقاها.
مع GraphQL، بدلاً من وجود نقاط نهاية متعددة لأنواع مختلفة من البيانات، عادةً ما تكون هناك نقطة نهاية واحدة فقط. يرسل العميل استعلامًا إلى نقطة النهاية هذه، ويحدد بالضبط البيانات التي يريدها. على سبيل المثال، إذا كان العميل يريد فقط اسم المنتج وسعره، فيمكنه كتابة استعلام مثل هذا:
{ المنتجات { سعر الاسم } }
بهذه الطريقة، يقوم الخادم بإرجاع البيانات التي طلبها العميل فقط، مما يؤدي إلى التخلص من الجلب الزائد. ولأن العميل يمكنه تحديد البيانات الدقيقة التي يحتاجها في استعلام واحد، يتم أيضًا تجنب الجلب الناقص. يمكنهم الحصول على جميع البيانات ذات الصلة، مثل معلومات المنتج ومراجعات العملاء، دفعة واحدة.
شيء رائع آخر في GraphQL هو نظام الكتابة الخاص به. يحتوي كل حقل في مخطط GraphQL على نوع محدد، مما يسهل فهم بنية البيانات. كما أنه يساعد في التحقق من صحة الاستعلامات على جانب العميل قبل إرسالها إلى الخادم. على سبيل المثال، إذا حاول العميل الاستعلام عن حقل غير موجود، فيمكن لعميل GraphQL اكتشاف الخطأ على الفور.
لدى GraphQL أيضًا مجتمع قوي ونظام بيئي متنامي. هناك العديد من الأدوات المتاحة لإنشاء واجهات برمجة تطبيقات GraphQL واختبارها وتصحيح أخطاءها. وهذا يسهل على المطورين العمل مع GraphQL ودمجه في مشاريعهم.
لكن GraphQL ليس كله أشعة الشمس وقوس قزح أيضًا. أحد التحديات التي تواجه GraphQL هو التخزين المؤقت. نظرًا لأن الاستعلامات يمكن أن تكون محددة وفريدة جدًا، فليس من السهل تخزين الاستجابات مؤقتًا كما هو الحال مع واجهات برمجة تطبيقات REST. من المحتمل أن يؤدي هذا إلى مشكلات في الأداء إذا تم طلب نفس البيانات عدة مرات.
عيب آخر هو أن GraphQL يمكن أن يكون أكثر تعقيدًا في الإعداد والصيانة مقارنةً بواجهات REST API. يتطلب تعريف المخطط وكتابة الاستعلام مزيدًا من المعرفة والخبرة. وإذا كانت واجهة برمجة التطبيقات الخاصة بك بسيطة نسبيًا، فقد يكون استخدام GraphQL مبالغًا فيه.
إذن، أي واحد يجب أن تختار؟ حسنا، ذلك يعتمد على احتياجاتك الخاصة. إذا كانت لديك واجهة برمجة تطبيقات بسيطة لا تتطلب الكثير من التخصيص في استرداد البيانات، وكان الأداء من خلال التخزين المؤقت يمثل أولوية قصوى، فقد تكون واجهات برمجة تطبيقات REST هي الحل الأمثل. من ناحية أخرى، إذا كان عملاؤك بحاجة إلى مزيد من المرونة في الحصول على البيانات التي يريدونها، وكنت على استعداد للتعامل مع تحديات التخزين المؤقت والتعقيد، فقد يكون GraphQL مناسبًا بشكل أفضل.


باعتبارنا موردًا لواجهات برمجة التطبيقات، فإننا نقدم مجموعة واسعة من واجهات برمجة التطبيقات عالية الجودة، مثلأعلى جودة لاباكونيتين هيدروبروميد، C32H45BrN2O8، CAS:97792-45-5,CAS:58-63-9، مسحوق إينوزين عالي الجودة، هيبوكسانثين، ونوعية جيدة ألبيندازول، CAS: 54965-21-8، C12H15N3O2S. سواء كنت تفضل REST أو GraphQL، يمكننا مساعدتك في دمج حلول API المناسبة لشركتك.
إذا كنت مهتمًا بمعرفة المزيد حول عروض واجهة برمجة التطبيقات (API) الخاصة بنا أو كانت لديك أي أسئلة بخصوص الاختلافات بين واجهات برمجة تطبيقات GraphQL وREST، فلا تتردد في التواصل معنا. نحن هنا لمساعدتك في اتخاذ القرار الأفضل لمشروعك ولضمان عملية تكامل سلسة.
مراجع
- ريتشاردسون، ل.، وروبي، س. (2007). خدمات الويب المريحة. أورايلي وسائل الإعلام.
- باباج، س. (2020). GraphQL قيد التنفيذ. منشورات مانينغ.
