3.2 KiB
3.2 KiB
id | title | localeTitle | challengeType |
---|---|---|---|
587d7fb1367417b2b2512bf4 | Chain Middleware to Create a Time Server | سلسلة Middleware لإنشاء خادم الوقت | 2 |
Description
app.METHOD(path, middlewareFunction)
. الوسيطة يمكن أيضا أن تكون بالسلاسل داخل تعريف الطريق.
انظر إلى المثال التالي:
app.get('/user', function(req, res, next) {هذه الطريقة مفيدة لتقسيم عمليات الخادم إلى وحدات أصغر. وهذا يؤدي إلى بنية أفضل للتطبيق ، وإمكانية إعادة استخدام الرمز في أماكن مختلفة. يمكن استخدام هذا الأسلوب أيضًا لإجراء بعض التحقق من صحة البيانات. في كل نقطة من مكدس البرامج الوسيطة يمكنك منع تنفيذ التحكم في السلسلة والسلسة الحالية إلى وظائف مصممة خصيصًا للتعامل مع الأخطاء. أو يمكنك تمرير التحكم إلى المسار المطابق التالي ، للتعامل مع الحالات الخاصة. سنرى كيف في قسم Express المتقدمة. في مسار
req.user = getTheUserSync(); // Hypothetical synchronous operation
next();
}, function(req, res) {
res.send(req.user);
})
app.get('/now', ...)
سلسلة وظيفة الوسيطة والمعالج النهائي. في وظيفة الوسيطة ، يجب إضافة الوقت الحالي إلى كائن الطلب في مفتاح req.time
. يمكنك استخدام new Date().toString()
. في المعالج ، {time: req.time}
باستخدام كائن JSON ، مع أخذ البنية {time: req.time}
.
تلميح: لن يمر الاختبار إذا لم تقم بربط الوسيطة. إذا قمت بتركيب الوظيفة في مكان آخر ، سيفشل الاختبار ، حتى إذا كانت نتيجة الإخراج صحيحة.
Instructions
Tests
tests:
- text: يجب أن يكون نقطة النهاية / الآن الوسيطة المثبتة
testString: 'getUserInput => $.get(getUserInput(''url'') + ''/_api/chain-middleware-time'').then(data => { assert.equal(data.stackLength, 2, ''"/now" route has no mounted middleware''); }, xhr => { throw new Error(xhr.responseText); })'
- text: يجب أن تقوم نقطة النهاية / الآن بإرجاع وقت يكون +/- 20 ثانية من الآن
testString: 'getUserInput => $.get(getUserInput(''url'') + ''/_api/chain-middleware-time'').then(data => { var now = new Date(); assert.isAtMost(Math.abs(new Date(data.time) - now), 20000, ''the returned time is not between +- 20 secs from now''); }, xhr => { throw new Error(xhr.responseText); })'
Challenge Seed
Solution
// solution required