GraphQL: بديل لـ REST على HTTP

GraphQL: بديل لـ REST على HTTP

توجد العديد من المعايير المعمارية مفتوحة المصدر لبناء التطبيقات وتوزيعها. تعد REST (نقل الحالة التمثيلية) و SOAP (بروتوكول الوصول إلى كائن بسيط) و RPC (استدعاء إجرائي بعيد) وواجهات برمجة تطبيقات GraphQL الأكثر شيوعًا.





RESTful APIs هي المعيار المعماري الأكثر استخدامًا لواجهة برمجة التطبيقات. إذا كنت قد كتبت واجهات برمجة تطبيقات RESTful معقدة مع العديد من نقاط النهاية ، فمن المحتمل أنك أدركت مدى تعقيدها. هذا صحيح بشكل خاص إذا كانت هناك اختلافات طفيفة بين نقاط النهاية.





اجعل فيديو اليوم

قد تواجه أيضًا مشكلات في جلب البيانات نظرًا لأن واجهات برمجة تطبيقات RESTful ليست مرنة بما يكفي لتحديد بيانات معينة. تحل GraphQL مشاكل واجهات برمجة تطبيقات RESTful.





ما هي GraphQL؟

GraphQL (لغة استعلام الرسم البياني) هي لغة استعلام ووقت تشغيل لبناء واجهات برمجة التطبيقات. على عكس واجهات برمجة تطبيقات REST مع العديد من نقاط النهاية لاستهلاك البيانات ، تحتوي واجهات برمجة تطبيقات GraphQL على نقطة دخول واحدة. يمكنك جلب بيانات محددة عن طريق وصفها في الاستعلامات.

ال مواصفات GraphQL يحدد لغة الاستعلام وكيف تعمل خوادم GraphQL. يمكنك إنشاء واستهلاك واجهات برمجة تطبيقات GraphQL بلغات جانب الخادم من Python إلى جافا سكريبت ، وأي لغة تدعم HTTP.



قامت Meta ببناء GraphQL في عام 2012 كبديل لـ REST للبناء على HTTP. أطلقوا GraphQL كمعيار مفتوح المصدر في عام 2015. واليوم ، تشرف مؤسسة GraphQL على تطوير مواصفات GraphQL.

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





أيضًا ، تُرجع جميع طلبات GraphQL في النهاية رمز الحالة 200 بغض النظر عن حالة الطلب.

كيف تعمل GraphQL؟

  GraphQL's functions and syntax

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





تتضمن مخططات GraphQL أنواع الكائنات التي تحدد الكائن القابل للطلب والحقول المتاحة له. في استعلامات وطفرات واجهة برمجة التطبيقات ، تتحقق حزمة GraphQL من صحة الاستعلامات وتنفذ الاستعلامات بناءً على وظائف المعالج المحددة (أدوات الحل).

لماذا يجب عليك استخدام GraphQL؟

REST هو معيار سهل الاستخدام ، ومعظم لغات البرمجة لديها أدوات لبناء RESTful APIs بسرعة. ومع ذلك ، هناك العديد من المشكلات المتعلقة ببناء واستهلاك واجهات برمجة تطبيقات RESTful.

فيما يلي بعض المشكلات المتعلقة بـ REST والتي تجعل المطورين يفضلون GraphQL لبعض حالات الاستخدام.

جلب البيانات غير الفعال

تقوم RESTful APIs بترحيل البيانات بناءً على مواصفات نقطة النهاية. فهي ليست مرنة بما يكفي لاسترداد البيانات التي تتجاوز ما هو مشفر في وظيفة المعالج لنقطة النهاية.

نظام أندرويد المركب لواجهة adb windows 10

افترض أن نقطة النهاية ترجع قائمة بالبيانات عند الاستدعاء ، وتحتاج إلى تحديد قيم أو معايير للحقول. في هذه الحالة ، يتعين على المطور إنشاء نقطة نهاية وتحديد منطق الأعمال لإرجاع البيانات. يمكنك تحليل المورد القيم يدويًا ، الأمر الذي يستغرق وقتًا أطول في النهاية.

تحل GraphQL مشكلة جلب البيانات غير الفعالة حيث يمكنك الاستعلام عن واجهات برمجة التطبيقات لإرجاع البيانات بناءً على المعايير والمواصفات بمرونة.

واجهات برمجة تطبيقات GraphQL تفاعلية ؛ يمكنك تحديد البيانات التي تريد استردادها في بناء جملة سهل ومقروء.

{ 
user(where: {age: {_eq: "89"}}) {
name
school(where: {alive: {_eq: true}}) {
bio
nationality
}
}
}

استعلام GraphQL أعلاه الاستعلامات أ المستعمل مخطط للإدخالات حيث سن الحقل هو 89. يحتوي الاستعلام على استعلام مضمن للإدخالات حيث يكون على قيد الحياة بتقييم ميداني حقيقي . تقوم بإرجاع حقول الاسم والسيرة الذاتية والجنسية من المخطط.

التطور السريع

يعد بناء واستهلاك واجهات برمجة تطبيقات GraphQL أسهل من استخدام REST ، خاصة مع زيادة حجم المشروع. أثناء مرحلة التطوير ، لا يتعين عليك تطوير العديد من المسارات ووظائف المعالج كما تفعل عند تطوير واجهات برمجة تطبيقات RESTful. استخدام واجهات برمجة تطبيقات GraphQL ليس مملاً مثل RESTful APIs.

في REST ، تمنح نقاط النهاية المختلفة إمكانية الوصول إلى موارد مختلفة ، على عكس GraphQL ، حيث توجد نقطة نهاية واحدة. ينتج عن ذلك مرونة وأداء ، ويمكن للاستعلامات استدعاء وظائف مختلفة لوحدة الحل.

لغة تعريف مخطط GraphQL

تحدد لغة تعريف مخطط GraphQL (SDL) المخططات الخاصة بخدمات GraphQL.

تعتبر بنية GraphQL SDL سهلة القراءة والفهم. ستحدد بنية مخططك في ملف بامتداد .graphql أو .graphqls امتداد.

type Human { 
name: String!
age: Int!
}

input AddHuman {
name: String!
age: Int!
}

type Mutation {
CreateHuman(input: AddHuman!): Human!
DeleteHuman(id: Int!): String!
UpdateHuman(id: Int!): String!
}

type Query {
GetHuman(id: Int!): Human!
GetHumans: [Human!]!
}

رمز GraphQL أعلاه هو مخطط لواجهة برمجة تطبيقات GraphQL تحدد بنية واجهة برمجة التطبيقات للطلبات. يحدد المخطط وظائف CRUD لواجهة برمجة التطبيقات.

من جانب العميل ، بناءً على هيكل المخطط وبيانات العميل أو العملية ، يمكن للعميل تنفيذ ملف استفسار (احصل أو احذف في REST) ​​أو أ طفره (PUT أو POST).

فيما يلي مثال على طلب البحث عن بشر مخطط.

query Human { 
name
age
}

سيعيد طلب البحث أعلاه المخطط البشري اسم و سن بيانات خاطئه.

تحتوي طفرات GraphQL على بناء جملة مختلف تمامًا عن الاستعلامات. فيما يلي مثال لعملية الطفرة على بشر مخطط.

mutation { 
CreateHuman(input:{ name:"man", age:1000000000000000,}) {
name
age
}
}

إدخال كود الطفرة اسم و سن إلى العميل وإرجاع البيانات من الحقول.

ستحتاج إلى مخزن بيانات للاستمرار عند إنشاء واجهة برمجة تطبيقات GraphQL. مثل REST ومعظم هندسة الويب المستندة إلى HTTP ، فإن GraphQL عديمة الحالة ، ويمكنك استخدام أي مخزن بيانات أو قاعدة بيانات لتطبيقك.

بناء واجهة برمجة تطبيقات GraphQL

  اللغات المدعومة من GraphQL

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

عند اختيار مكتبة GraphQL ، فأنت تريد استخدام مكتبة غنية بالميزات تدعم جميع أنواع وعمليات GraphQL. تتخذ معظم المكتبات أسلوب المخطط أولاً أو منهج التعليمات البرمجية أولاً. في السابق ، تقوم بتعريف مخطط GraphQL ، وتقوم المكتبة بإنشاء وحدات التحليل والتعليمات البرمجية المعيارية. بالنسبة للأخير ، يمكنك كتابة التعليمات البرمجية للمحللات دون تحديد مخطط.

اعتماد GraphQL

منذ إنشاء GraphQL ، أصدر المطورون والشركات أدوات لتبسيط استخدامها. هذه يمكن أن تقلل من وقت التطوير للمشاريع الصغيرة والمتوسطة.

يمكنك التحقق من عملاء GraphQL مفتوحين المصدر ووثائق GraphQL ومواصفاتها لمعرفة المزيد.