مقدمة Middleware في Express.js
Middleware in Express.js هو مفهوم قوي يسمح لك بتنفيذ الوظائف بترتيب معين خلال دورة حياة الطلب والاستجابة. يمكن أن تؤدي هذه الوظائف مهام مختلفة مثل المصادقة والتسجيل والتحقق من صحة البيانات والمزيد. Middleware يتم تنفيذ الوظائف بالتسلسل ، ولكل منها middleware وصول إلى request
الكائنات response
، بالإضافة إلى الوظيفة next
، التي تمرر التحكم إلى التالي middleware في المكدس.
لماذا تستخدم Middleware ؟
Middleware ضروري لتهيئة وظائف التطبيق وتحسين قابلية صيانته. فهو يمكّنك من الحفاظ على نظافة معالجات المسار الخاصة بك والتركيز على مهام محددة أثناء تفريغ المهام المشتركة أو الشاملة للوظائف middleware. يعزز فصل الاهتمامات هذا من إمكانية إعادة استخدام الكود ويجعل قاعدة الكود الخاصة بك أكثر تنظيماً.
الإبداع والاستخدام Middleware
للإنشاء middleware ، Express.js يمكنك تحديد دالة تأخذ ثلاث معلمات: request
و response
و و next
.
فيما يلي مثال أساسي على middleware ذلك يسجل كل طلب وارد:
const logMiddleware =(req, res, next) => {
console.log(`Received a ${req.method} request at ${req.url}`);
next(); // Pass control to the next middleware
};
app.use(logMiddleware);
يمكنك استخدام app.use()
الطريقة لتطبيقها middleware عالميًا على جميع المسارات ، أو يمكنك استخدامها بشكل انتقائي لمسارات محددة.
ترتيب Middleware التنفيذ
Middleware يتم تنفيذ الوظائف بالترتيب الذي تم تحديدها به باستخدام app.use()
.
على سبيل المثال:
app.use(middleware1);
app.use(middleware2);
في هذه الحالة ، middleware1
سيتم تنفيذها من قبل middleware2
لجميع الطلبات الواردة.
معالجة الأخطاء في Middleware
في حالة حدوث خطأ داخل إحدى middleware الوظائف ، يمكنك تمرير الخطأ إلى الوظيفة next
، Express.js وستنتقل تلقائيًا إلى معالجة الأخطاء middleware.
هذا مثال:
const errorMiddleware =(err, req, res, next) => {
console.error(err);
res.status(500).send('Something went wrong!');
};
app.use(errorMiddleware);
استخدام Middleware للمصادقة
Middleware يستخدم عادة لتنفيذ المصادقة والترخيص في تطبيقات الويب. على سبيل المثال ، يمكنك إنشاء middleware وظيفة تتحقق مما إذا كان المستخدم قد تمت مصادقته قبل السماح بالوصول إلى مسارات معينة:
const authenticateMiddleware =(req, res, next) => {
if(req.isAuthenticated()) {
return next(); // User is authenticated, proceed to the next middleware
}
res.redirect('/login'); // User is not authenticated, redirect to login page
};
app.get('/profile', authenticateMiddleware,(req, res) => {
res.send('Welcome to your profile!');
});
خاتمة
Middleware in Express.js هو أداة حيوية لإدارة وتعزيز وظائف تطبيقات الويب الخاصة بك. من خلال إنشاء middleware وظائف قابلة لإعادة الاستخدام ، يمكنك تبسيط التعليمات البرمجية الخاصة بك ، وتقسيم المخاوف إلى نمط معياري ، وتحسين إمكانية الصيانة الشاملة لمشاريعك. من معالجة المصادقة إلى التسجيل وإدارة الأخطاء ، middleware يمكّنك من إنشاء تطبيقات ويب قوية وآمنة بكفاءة.