Middleware in Express.js: Обработка промежуточного запроса

Введение Middleware в Express.js

Middleware in Express.js — мощная концепция, позволяющая выполнять функции в определенном порядке в течение жизненного цикла запрос-ответ. Эти функции могут выполнять различные задачи, такие как аутентификация, ведение журнала, проверка данных и многое другое. Middleware функции выполняются последовательно, и каждая middleware имеет доступ к объектам request и response, а также к next функции, которая передает управление следующей middleware в стеке.

Зачем использовать Middleware ?

Middleware имеет важное значение для модульной функциональности вашего приложения и повышения его ремонтопригодности. Это позволяет поддерживать чистоту обработчиков маршрутов и фокусировать их на конкретных задачах, перекладывая общие или сквозные задачи на middleware функции. Такое разделение проблем способствует повторному использованию кода и делает вашу кодовую базу более организованной.

Создание и использование Middleware

Чтобы создать middleware in Express.js, вы определяете функцию, которая принимает три параметра: request, response, и next.

Вот базовый пример middleware регистрации каждого входящего запроса:

const logMiddleware =(req, res, next) => {  
  console.log(`Received a ${req.method} request at ${req.url}`);  
  next(); // Pass control to the next middleware  
};  
  
app.use(logMiddleware);  

Вы можете использовать этот app.use() метод для глобального применения middleware ко всем маршрутам или использовать его выборочно для определенных маршрутов.

Порядок Middleware исполнения

Middleware функции выполняются в том порядке, в котором они определены с помощью app.use().

Например:

app.use(middleware1);  
app.use(middleware2);  

В этом случае middleware1 будет выполняться раньше middleware2 для всех входящих запросов.

Обработка ошибок в Middleware

Если внутри функции возникает ошибка middleware, вы можете передать ее функции next и Express.js автоматически перейти к обработке ошибок middleware.

Вот пример:

const errorMiddleware =(err, req, res, next) => {  
  console.error(err);  
  res.status(500).send('Something went wrong!');  
};  
  
app.use(errorMiddleware);  

Использование Middleware для аутентификации

Middleware обычно используется для реализации аутентификации и авторизации в веб-приложениях. Например, вы можете создать middleware функцию, которая проверяет, аутентифицирован ли пользователь, прежде чем разрешить доступ к определенным маршрутам:

const authenticateMiddleware =(req, res, next) => {  
  if(req.isAuthenticated()) {  
    return next(); // User is authenticated, proceed to the next middleware  
  }  
  res.redirect('/login'); // User is not authenticated, redirect to login page  
};  
  
app.get('/profile', authenticateMiddleware,(req, res) => {  
  res.send('Welcome to your profile!');  
});  

 

Заключение

Middleware in Express.js — жизненно важный инструмент для управления и улучшения функциональности ваших веб-приложений. Создавая повторно используемые middleware функции, вы можете оптимизировать свой код, разделить задачи на модули и улучшить общую ремонтопригодность ваших проектов. От обработки аутентификации до ведения журналов и управления ошибками, middleware позволяет эффективно создавать надежные и безопасные веб-приложения.