freeCodeCamp/curriculum/challenges/russian/05-apis-and-microservices/basic-node-and-express/implement-a-root-level-requ...

5.6 KiB
Raw Blame History

id title localeTitle challengeType
587d7fb1367417b2b2512bf3 Implement a Root-Level Request Logger Middleware Реализовать промежуточное программное обеспечение регистратора запросов корневого уровня 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 окружен пространством с обоего сторон. Вы можете получить метод запроса (http-глагол), относительный путь маршрута и IP-адрес вызывающего абонента из объекта запроса, используя req.method , req.path и req.ip Не забудьте вызвать next() когда вы закончите, иначе ваш сервер застрянет навсегда. Обязательно откройте «Журналы» и посмотрите, что произойдет, когда поступит какой-то запрос… Подсказка: Express оценивает функции в порядке их появления в коде. Это верно и для промежуточного программного обеспечения. Если вы хотите, чтобы он работал для всех маршрутов, он должен быть установлен перед ними.

Instructions

Tests

tests:
  - text: Промежуточное программное обеспечение Root Level Logger должно быть активным
    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

// solution required