NahdaAIنهضة
Node.js • المستوى الثاني • الدرس 3

البرمجيات الوسيطة في إكسبريس (Express Middleware)

العودة لفهرس المستوى

أهداف الدرس العلمية

  • فهم دور الـ Middleware في اعتراض واستقبال الطلبات وتعديلها بـ app.use().
  • استخدام الدالة next() للانتقال لمعالجة المسار التالي.
  • بناء سلسلة Middlewares متتالية (Logging → Auth → Handler).
  • الفرق بين Middleware العام و Middleware المخصص لمسار معيّن.

1. مفهوم Middleware

هي دوال تمتلك صلاحية الوصول إلى كائن الطلب (req)، كائن الاستجابة (res)، والدالة التالية (next) في سلسلة معالجة طلبات السيرفر.

javascript
// سلسلة Middlewares في Express
app.use((req, res, next) => {
  console.log('📝 السجل:', req.method, req.url);
  next();  // ← انتقل للتالي
});

app.use((req, res, next) => {
  if (req.headers.authorization) {
    next();
  } else {
    res.status(401).send('غير مصرح');
  }
});

app.get('/', (req, res) => {
  res.send('مرحباً!');
});

2. ترتيب تنفيذ السلسلة

1Request → Logger Middleware
↓ next()
2Auth Middleware
↓ next()
3Route Handler → Response
التطبيق العملي المباشر

تحدي الدرس الثالث: بناء سلسلة Middlewares

قم بالتعديل على الكود في المحرر أدناه:

  1. عدّل loggerMiddleware ليُسجّل الوقت الحالي بـ new Date().toLocaleTimeString().
  2. أضف authMiddleware(req, next) يتحقق من req.user: إذا موجود ينفذ next()، وإلا يطبع "الوصول مرفوض".
  3. اربط الميدل ويرين في سلسلة داخل handleRequest: Logger → Auth → Handler.
  4. أضف اختبارين: طلب بدون مستخدم (يرفض)، وطلب بمستخدم "جمال" (ينجح).
⏳ جارٍ تحميل المحرر التفاعلي...