REST Vs. GraphQL

Web

Mobile

Frontend

Backend

March 17, 2024

الفرق بين الـ REST والـ GraphQL؟🔥

بداية خلينا نعرف انه هدول الطريقتين اشهر انواع الـ API Architectures وهدفهم واحد وهو نقل البيانات ما بين الـServer والـ Client.

REST APIs

تنظم الـ REST الـ API على شكل Endpoints، وتسمح لك بالوصول إلى عمليات معينة مثل GET وPOST وPUT وDELETE، وترد عليك بالـResponse.

GraphQL

بالمقابل، GraphQL تقدم Endpoint واحدة للتحدث معها، حيث تصف بدقة ما تريد عبر استخدام الاستعلامات (Queries)، وترد عليك بنفس الطريقة معلومات محددة وفقًا لطلبك.

ما الفائدة؟

يأتي GraphQL لحل بعض المشكلات التي نشأت مع استخدام REST، بما في ذلك:
1. مشكلة الـ Over-Fetching و Under-Fetching
2. الـ Endpoints الكثيرة.
3. الـ Multiple Round Trips

أولا: مشكلة الـ Over-Fetching و Under-Fetching
REST يستجيب بطريقة ثابتة بكل المعلومات المتاحة، حتى التي لا تحتاجها، مما يؤدي إلى استهلاك Network Bandwidth في نقل معلومات انت مش محتاجها اصلاً.

على سبيل المثال: انت بتتصفح موقع تويتر ودخلت على صفحة الـFeed راح يرجعلك كل المعلومات الخاصة بالمستخدمين في التطبيق مع انه انت محتاج اسمهم وصورهم والتويتة اللي نشرها وهاد اسمه Over Fetching. بينما GraphQL يسمح لك بتحديد بالضبط ما تريد، مما يحل هذه المشكلة.

ثانيا: الـ Endpoints الكثيرة
REST يتطلب Endpoint لكل resource، مما يؤدي إلى تعقيد في بنيته واذا كان الموقع كبير رح ينتهي فيك الامر لمئات واحياناً آلاف الـEndpoints
GraphQL يقدم واجهة واحدة تقدم جميع البيانات بناءً على Query محددة.

ثالثا: الـ Multiple Round Trips

هاي المشكلة تحديداً اللي اجبرت Facebook تخترع منهجية الـ GraphQL كحل للتطبيق لما شافو انه الصفحة الواحدة بتحتاج اكتر من Call للعديد من الـEndpoints والهدف هو استخدام جزء بسيط من الـResponse فتخيل عشان تشوف بوست على الـFeed لشخص، كان النظام بيحتاج يجيب كل المعلومات عن هاد المستخدم عشان يعرض لك الاسم والصورة فقط.

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