← المستوى 3 – الخبير

الدرس 8 من 10 ⏱ 40 دقيقة بريميوم

خادم صغير مع Express

ابنِ خادمك الخاص في Node.js وExpress. أول API لك يجيب على أول طلب.

شاهد معي: إعداد خادم

Express أشهر حزمة لبناء خوادم في Node.js – يحوّل المهمة إلى بضعة أسطر فقط. الخادم مشروع منفصل، بعيداً عن تطبيق React (تذكّر: frontend وbackend نصفان). في الطرفية:

cd Desktop
mkdir my-server
cd my-server
npm init -y
npm install express

افتح المجلد في VS Code وأنشئ ملفاً اسمه server.js:

const express = require("express");
const app = express();

// When someone sends a GET to /api/hello, respond
app.get("/api/hello", (request, response) => {
  response.json({ message: "Hi! This is your own server. 🎉" });
});

app.listen(3900, () => {
  console.log("Server running at http://localhost:3900");
});

شغّله:

node server.js

وافتح http://localhost:3900/api/hello في متصفحك. هل ترى رد JSON؟ لقد بنيت خادماً للتو. بلا سحر – 10 أسطر.

ما يحدث في الكود:

توقف الخادم بـ Ctrl+C. وانتبه: بعد كل تغيير في الكود، يجب الإيقاف وإعادة التشغيل – الخادم ليس Vite، لا يحدّث نفسه.

شاهد معي: خادم ببيانات

الخادم عادة يوزّع بيانات. أضف endpoint ثانياً فوق listen:

const results = [
  { opponent: "Lakeside", score: "3:1", home: true },
  { opponent: "Northgate", score: "2:2", home: false },
  { opponent: "Elmwood", score: "4:0", home: true },
];

app.get("/api/results", (request, response) => {
  response.json(results);
});

أعد تشغيل الخادم وافتح http://localhost:3900/api/results – بياناتك، عبر API. هكذا بالضبط يعمل كل موقع كبير (فقط بقاعدة بيانات بدل array).

دورك الآن 💪

  1. شغّل خادماً حسب الدليل.
  2. أضف endpoint ببيانات من مشروعك: 🏫 /api/menu (array وجبات للأسبوع) · 🙋 /api/favorites (أفضل ألعابك/كتبك) · 🌍 /api/trips (قائمة رحلات) · ⚽ /api/results (نتائج مباريات).
  3. أضف endpoint مرحاً /api/random يرجع رسالة مختلفة كل مرة:
const messages = ["We're winning today!", "Practice at 5 PM!", "Let's go, Eagles!"];

app.get("/api/random", (request, response) => {
  const random = messages[Math.floor(Math.random() * messages.length)];
  response.json({ message: random });
});
  1. جرّب كل الـ endpoints في متصفحك – ثم جرّب استدعاء واحد بـ fetch() من الـ console، كما تعلّمت في الدرس السابق.
⚠️

«Cannot GET /api/…» تعني أن الـ endpoint غير موجود – تحقق من خطأ إملائي في العنوان ومن أنك أعدت تشغيل الخادم بعد تغييره. «EADDRINUSE» تعني أن المنفذ 3900 مستخدم أصلاً – ربما لديك خادم قديم في طرفية أخرى؛ أوجده وأوقفه (Ctrl+C).

تحقق من نفسك: خادمك يعمل على المنفذ 3900 ويجيب على عدة endpoints ببيانات JSON خاصة بك. تعرف الـ frontend، وتبدأ بالـ backend – يبقى فقط وصلهما. سنفعل ذلك بالضبط في الدرس القادم مع سجل الزوار.

ما ستخرج به من هذا الدرس