منتصر احمد نشر 3 نوفمبر 2023 أرسل تقرير نشر 3 نوفمبر 2023 (معدل) const cookies = (handler) => (req, res) => { res.cookie = (name, value, options) => cookie(res, name, value, options) return handler(req, res) } export default cookies هل يمكن شرح هذا الكود لاني لا استطيع فهمه تم التعديل في 3 نوفمبر 2023 بواسطة Mustafa Suleiman تعديل عنوان السؤال 1 اقتباس
0 Mustafa Suleiman نشر 3 نوفمبر 2023 أرسل تقرير نشر 3 نوفمبر 2023 الفكرة من استخدام الـ middleware هو إضافة وظيفة res.cookie() إلى response object، حيث أن وظيفة res.cookie() تستخدم لإنشاء ملفات تعريف الارتباط وإرسالها إلى العميل. ويتكون الكود من دالة واحدة تسمى cookies()، وتستقبل تلك الدالة دالة أخرى كمعامل، والتي ستصبح middleware الرئيسي، وترجع الدالة cookies() middleware الجديد، والذي يضيف وظيفة res.cookie() إلى response object. أي أن: const cookies = (handler) => (req, res) => { ... }: هو تعريف لدالة (cookies) وتقوم بقبول معامل واحد (handler)، وتلك الدالة تُستدعى مع معامل واحد آخر (من نوع req و res) عندما تُستدعى داخل تطبيق Node.js. الدالة تعيد دالة أخرى. وفي السطر التالي: res.cookie = (name, value, options) => cookie(res, name, value, options): تم إنشاء خاصية جديدة cookie داخل كائن الاستجابة (res)، وتلك الخاصية تمكنك من تعيين قيمة كوكيز جديدة باستخدام res.cookie(name, value, options). والسطر التالي: return handler(req, res): يتم استدعاء الدالة handler الممررة كمعامل إلى الدالة الأصلية cookies باستخدام handler(req, res)، مما يعني أن أي وظيفة أخرى تقوم باستدعاء cookies كمعالج ستتلقى معاملي req و res وستتمكن من استخدام res.cookie لتعيين قيمة كوكيز. وتستطيع تعيين كوكيز جديدة داخل معالج الطلب كما يلي: import cookies from './cookies'; const requestHandler = (req, res) => { // تعيين قيمة كوكيز باستخدام res.cookie res.cookie('user', 'Montaser', { maxAge: 3600000 }); // الرد على الطلب العادي res.send('Hello, World!'); }; // استخدام middleware لمعالج الطلب const app = express(); app.use(cookies); app.get('/', requestHandler); app.listen(3000, () => { console.log('Server is running on port 3000'); }); 1 اقتباس
السؤال
منتصر احمد
هل يمكن شرح هذا الكود لاني لا استطيع فهمه
تم التعديل في بواسطة Mustafa Suleimanتعديل عنوان السؤال
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.