В этой части учебника вы прочитаете что такое в Express.js middleware и конвейер обработки, ну и конечно, как со всем этим работать.
Что такое в Express.js middleware и конвейер обработки:
Конвейер обработки это механизм который обрабатывает запросы от получения до ответа, он состоит из нескольких таких компонентов или middleware, если вы посмотрите на прошлую статью, то это всё были app.get()
у нас.
Middleware же это по сути промежуточная программное обеспечение, оно позволяет перед отправкой ответ, обработать данные, это используется когда вам, например, надо проверить токен авторизации или отправить данные в логги.
Работа с middleware в Express.js:
Так как мы уже разобрались, что app.get()
и есть конвейер обработки, мы его рассматривать не будем, а вот middleware рассмотрим, для того чтобы его встроить в нашу программу, нужно использовать app.use(), как вы помните из прошлой части мы его использовали для обработки нашего роутинга.
То есть по сути, когда мы получаем запрос, мы перед ответом проверяем есть ли вообще страница для этого пути, и если да, то уже выдаём, так примерено и работает маршрутизация.
Но вот вам наиболее наглядный пример работы middleware:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | let express = require("express"); let app = express(); app.use(function(req, res, next){ console.log("Middleware 1"); next(); }); app.use(function(req, res, next){ console.log("Middleware 2"); next(); }); app.get("/", function(req, res){ console.log("Hello"); res.send("Hello"); }); app.listen(3000); |
В начале мы тут как обычно импортируем Express и создаём его приложение, после чего начинаем использовать middleware, и в качестве параметра app.use()
, принимает в себя функцию, которая в свою очередь принимает ещё три параметра, это req, данные запроса и res, данные ответа, последние next, запускает следующий конвейер обработки запроса.
Как видите в каждом middleware, мы выводим в консоль, что это миддлвэйр, вместо этого может быть любой другой код, это уже не важно, самое главное это в конце, после того как вы закончите всю обработку, это запустить функцию next()
, чтобы перейти к следующими обработчику.
Вот что у меня вывелось в терминале:
Как видите всё сработало так как надо, сначала middleware, а потом после того как они обработались, отправился ответ, это основное что вам стоит знать.
Дополнительно:
Также в app.use()
в качестве первого параметра вы можете использовать путь, например «/user», в таком случае middleware сработает только для этого URL, что тоже бывает крайне полезно, вот как это выглядит:
1 2 3 4 5 | app.use("/user", function(req, res, next){ console.log("Middleware user"); next(); }); |
Таким образом у нас он сработает только на определённом пути.
Вы ещё можете прервать работу конвейера обработки, для этого просто в middleware отправьте ответ пользователи и всё, примерно так это выглядит:
1 2 3 4 5 | app.use(function(req, res, next){ console.log("Middleware"); res.send("Middleware"); }); |
В таком случае у вас отправиться ответ, до того как вы дойдёте до app.get().
Вывод:
В этой части вы прочитали что такое в Express.js middleware и конвейер обработки, думаю вы узнали что-то новое и вам было интересно.