Apollo Server لجافا سكريبت (Node.js): دليل شامل مع أمثلة

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

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

ابدأ الدورة

Apollo Server لجافا سكريبت (Node.js): دليل شامل مع أمثلة

Apollo Server هي مكتبة قوية ومرنة لبناء خوادم GraphQL على Node.js. وهي جزء من نظام Apollo GraphQL البيئي، وتوفر للمطورين مجموعة أدوات مريحة لبناء واجهات برمجة تطبيقات (APIs) عالية الأداء وقابلة للتوسع وسهلة الصيانة. إذا كنت معتادًا على REST، فيمكنك تصور GraphQL كبديل حيث يقرر العميل البيانات التي يحتاجها، ويعيد الخادم ما تم طلبه بالضبط. يتولى Apollo Server جميع المهام الروتينية: تحليل الاستعلامات، والتحقق من صحة المخطط، وتنفيذ الدوال الحلالة (resolvers)، وتنسيق الرد.

لماذا تحتاج إلى Apollo Server؟ أولاً، يبسط بشكل كبير تطوير خوادم GraphQL. لست بحاجة إلى كتابة محللات أو أدوات تحقق أو القلق بشأن الأمان (الحماية من حقن SQL، وتقييد عمق الاستعلام، وما إلى ذلك) — كل هذا مدمج بالفعل. ثانيًا، يدعم Apollo Server العديد من التكاملات: مع Express وFastify وKoa وAWS Lambda وAzure Functions ومنصات أخرى. هذا يعني أنه يمكنك نشر الخادم في أي مكان — من تطبيق محلي بسيط إلى وظيفة serverless. ثالثًا، المكتبة في تطور نشط، ولديها مجتمع كبير ووثائق ممتازة، مما يجعلها المعيار الفعلي لـ GraphQL في Node.js.

في هذه المقالة، سنشرح بالتفصيل التثبيت والطرق الأساسية، وسنكتب عدة أمثلة عملية، ونقدم نصائح حول الأداء. ستكون المادة مفيدة لكل من المبتدئين الذين بدأوا للتو في التعرف على GraphQL، والمطورين ذوي الخبرة الذين يرغبون في تعميق معرفتهم بـ Apollo Server.

1. التثبيت

للعمل مع Apollo Server، ستحتاج إلى Node.js الإصدار 14 أو أعلى. يتم التثبيت عبر npm (أو yarn). الحزمة الرئيسية هي @apollo/server. ستحتاج أيضًا إلى graphql — وهي جوهر لغة GraphQL، والتي بدونها لن يعمل Apollo Server.

npm install @apollo/server graphql

إذا كنت تخطط لاستخدام Apollo Server مع Express (الخيار الأكثر شيوعًا)، فقم بتثبيت ما يلي أيضًا:

npm install express cors body-parser
npm install @as-integrations/express

للعمل مع TypeScript (موصى به)، قم بتثبيت الأنواع:

npm install --save-dev typescript @types/node @types/express

2. البداية السريعة — مثال عملي بسيط

لنقم بإنشاء خادم GraphQL بسيط جدًا يرحب بالمستخدم. أنشئ ملفًا باسم index.js وأضف الكود التالي:

import { ApolloServer } from '@apollo/server';
import { startStandaloneServer } from '@apollo/server/standalone';

// 1. تعريف المخطط (typeDefs)
const typeDefs = `#graphql
  type Query {
    hello: String
  }
`;

// 2. تعريف الدوال الحلالة (resolvers)
const resolvers = {
  Query: {
    hello: () => 'مرحبًا بالعالم! هذا هو Apollo Server!',
  },
};

// 3. إنشاء نسخة من الخادم
const server = new ApolloServer({
  typeDefs,
  resolvers,
});

// 4. تشغيل الخادم
const { url } = await startStandaloneServer(server, {
  listen: { port: 4000 },
});

console.log(`🚀 الخادم يعمل على الرابط: ${url}`);

قم بتشغيل الخادم باستخدام الأمر node index.js (إذا كنت تستخدم وحدات ES، أضف "type": "module" في ملف package.json). افتح المتصفح وانتقل إلى http://localhost:4000. سترى واجهة Apollo Sandbox، حيث يمكنك تنفيذ الاستعلام:

query {
  hello
}

يجب أن يكون الرد: { "data": { "hello": "مرحبًا بالعالم! هذا هو Apollo Server!" } }. تهانينا، أول خادم GraphQL لك يعمل!

3. الطرق/الدوال/الفئات الأساسية

دعنا نستعرض العناصر الرئيسية لـ Apollo Server. لكل عنصر، سنقدم التوقيع ووصفًا موجزًا ومثالًا.

3.1. new ApolloServer(config)

التوقيع:

توصيات