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
قم بالتعديل على الكود في المحرر أدناه:
- عدّل
loggerMiddlewareليُسجّل الوقت الحالي بـnew Date().toLocaleTimeString(). - أضف
authMiddleware(req, next)يتحقق منreq.user: إذا موجود ينفذnext()، وإلا يطبع "الوصول مرفوض". - اربط الميدل ويرين في سلسلة داخل
handleRequest: Logger → Auth → Handler. - أضف اختبارين: طلب بدون مستخدم (يرفض)، وطلب بمستخدم "جمال" (ينجح).
⏳ جارٍ تحميل المحرر التفاعلي...