واجهة برمجة تطبيقات GraphQL مع JavaScript: برنامج تعليمي عملي خطوة بخطوة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة إلى GraphQL ومزاياها

\n\n

GraphQL هي لغة استعلام وبيئة تشغيل لواجهات برمجة التطبيقات (API)، تم تطويرها بواسطة Facebook. على عكس REST، حيث تحصل على هياكل بيانات ثابتة، تسمح GraphQL للعميل بطلب ما يحتاجه فقط. وهذا يجعل واجهات برمجة التطبيقات أكثر مرونة وكفاءة.

\n\n

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

\n\n

1. إعداد المشروع وتثبيت التبعيات

\n\n

للبدء، سنقوم بإنشاء مشروع Node.js جديد وتثبيت الحزم اللازمة. سنستخدم apollo-server وهي مكتبة شائعة لإنشاء خوادم GraphQL.

\n\n

الخطوة 1: تهيئة المشروع

\n
mkdir graphql-tutorial\ncd graphql-tutorial\nnpm init -y
\n\n

الخطوة 2: تثبيت Apollo Server و GraphQL

\n
npm install apollo-server graphql
\n\n

بعد التثبيت، سنقوم بإنشاء الملف الرئيسي index.js، حيث سيكون خادمنا.

\n\n

2. إنشاء خادم GraphQL أساسي

\n\n

الآن سنكتب خادمًا بسيطًا يستقبل الطلبات ويعيد الردود. للقيام بذلك، سنحدد المخطط (schema) والمحللات (resolvers).

\n\n

الخطوة 1: تعريف نوع البيانات

\n

سننشئ نوعًا بسيطًا Book مع الحقول id و title و author.

\n\n
const { ApolloServer, gql } = require('apollo-server');\n\n// مخطط GraphQL\nconst typeDefs = gql`\n  type Book {\n    id: ID!\n    title: String!\n    author: String!\n  }\n\n  type Query {\n    books: [Book]\n    book(id: ID!): Book\n  }\n`;\n\n// بيانات مثال (في مشروع حقيقي - قاعدة بيانات)\nconst books = [\n  { id: '1', title: 'الحرب والسلام', author: 'ليو تولستوي' },\n  { id: '2', title: 'الجريمة والعقاب', author: 'فيودور دوستويفسكي' },\n  { id: '3', title: 'السيد ومارجريتا', author: 'ميخائيل بولغاكوف' }\n];\n\n// المحللات - دوال تعيد البيانات\nconst resolvers = {\n  Query: {\n    books: () => books,\n    book: (parent, args) => books.find(book => book.id === args.id)\n  }\n};\n\n// إنشاء الخادم\nconst server = new ApolloServer({ typeDefs, resolvers });\n\n// تشغيل الخادم\nserver.listen().then(({ url }) => {\n  console.log(`🚀  الخادم جاهز على العنوان: ${url}`);\n});
\n\n

الخطوة 2: التشغيل والاختبار

\n

قم بتنفيذ الأمر node index.js وافتح http://localhost:4000 في المتصفح. سترى GraphQL Playground - أداة لاختبار الاستعلامات.

\n\n

جرب تنفيذ استعلام بسيط:

\n
{\n  books {\n    title\n    author\n  }\n}
\n\n

يجب أن يحتوي الرد على قائمة الكتب مع الحقول المحددة.

\n\n

3. إضافة التحويرات وتوسيع المخطط

\n\n

الآن سنضيف إمكانية تعديل البيانات من خلال التحويرات. سيسمح هذا بإنشاء وتحديث وحذف السجلات.

\n\n

الخطوة 1: تعريف التحويرات في المخطط

\n
const typeDefs = gql`\n  type Book {\n    id: ID!\n    title: String!\n    author: String!\n  }\n\n  input BookInput {\n    title: String!\n    author: String!\n  }\n\n  type Query {\n    books: [Book]\n    book(id: ID!): Book\n  }\n\n  type Mutation {\n    addBook(input: BookInput!): Book\n    deleteBook(id: ID!): Book\n  }\n`;
\n\n

الخطوة 2: تنفيذ المحللات للتحويرات

\n
const resolvers = {\n  Query: {\n    books: () => books,\n    book: (parent, args) => books.find(book => book.id === args.id)\n  },\n  Mutation: {\n    addBook: (parent, args) => {\n      const newBook = {\n        id: String(books.length + 1),\n        title: args.input.title,\n        author: args.input.author\n      };\n      books.push(newBook);\n      return newBook;\n    },\n    deleteBook: (parent, args) => {\n      const index = books.findIndex(book => book.id                

المدونات

توصيات الكتب