---
id: 587d7fb1367417b2b2512bf3
title: Implement a Root-Level Request Logger Middleware
localeTitle: تنفيذ برنامج Logware Logger Logger على مستوى الجذر
challengeType: 2
---
## Description
قبل أن نقدم وظيفة الوسيطة express.static()
. الآن حان الوقت لنرى ما هي الوسيطة ، بمزيد من التفصيل. دالات الوسيطية هي الدوال التي تأخذ 3 حجج: كائن الطلب ، كائن الاستجابة ، والدالة التالية في دورة طلب-استجابة التطبيق. هذه الوظائف تنفيذ بعض التعليمات البرمجية التي يمكن أن يكون لها آثار جانبية على التطبيق ، وعادة ما تضيف المعلومات إلى الكائنات استجابة أو طلب. يمكنهم أيضًا إنهاء دورة إرسال الاستجابة ، عند استيفاء بعض الشروط. إذا لم يرسلوا الاستجابة ، فعند الانتهاء من ذلك ، يبدأون تنفيذ الوظيفة التالية في المكدس. يتم تشغيل هذا استدعاء الوسيطة الثالثة next()
. مزيد من المعلومات في الوثائق السريعة .
انظر إلى المثال التالي:
function(req, res, next) {
console.log("I'm a middleware...");
next();
}
دعونا نفترض أننا شنت هذه الوظيفة على الطريق. عندما يطابق أحد الطلبات المسار ، فإنه يعرض السلسلة "أنا برنامج وسيط ...". ثم ينفذ الوظيفة التالية في المكدس.
في هذا التمرين ، سنقوم ببناء برنامج وسيط بمستوى الجذر. كما رأينا في التحدي 4 ، لتركيب وظيفة الوسيطة على مستوى الجذر يمكننا استخدام طريقة app.use(<mware-function>)
. في هذه الحالة ، سيتم تنفيذ الوظيفة لجميع الطلبات ، ولكن يمكنك أيضًا تعيين شروط أكثر تحديدًا. على سبيل المثال ، إذا كنت تريد تنفيذ دالة فقط لطلبات POST ، فيمكنك استخدام app.post(<mware-function>)
. توجد أساليب مماثلة لجميع الأفعال http (GET، DELETE، PUT،…).
بناء بسيط المسجل. لكل طلب ، يجب عليه تسجيل الدخول في وحدة التحكم سلسلة أخذ التنسيق التالي: method path - ip
. قد يبدو المثال: GET /json - ::ffff:127.0.0.1
. لاحظ أن هناك مسافة بين method
و path
وأن اندفاعة فصل path
و ip
وتحيط به مساحة على جانبي. يمكنك الحصول على طريقة الطلب (الفعل المتشعب) ، ومسار المسار النسبي ، req.method
المتصل من كائن الطلب ، باستخدام req.method
، req.path
و req.ip
تذكر الاتصال next()
عند الانتهاء ، أو أن الخادم الخاص بك سيكون عالقاً إلى الأبد. تأكد من فتح "السجلات" ، وشاهد ما سيحدث عند وصول بعض الطلبات ...
تلميح: يقوم Express بتقييم الوظائف بالترتيب الذي تظهر به في التعليمة البرمجية. هذا صحيح على الوسيطة أيضا. إذا كنت تريد أن تعمل في جميع المسارات ، فيجب تثبيتها قبلها.
## Instructions
## Tests
```yml
tests:
- text: يجب أن تكون البرامج الوسيطة لمسجل المستوى الجذر نشطة
testString: 'getUserInput => $.get(getUserInput(''url'') + ''/_api/root-middleware-logger'').then(data => { assert.isTrue(data.passed, ''root-level logger is not working as expected''); }, xhr => { throw new Error(xhr.responseText); })'
```
## Challenge Seed
## Solution
```js
// solution required
```