PassFront
  1. PassFront
  2. База знаний
  3. HTTP и API

Что такое middleware в Express и в каком порядке они выполняются?

HTTP и API

Middleware — функция (req, res, next), которая видит запрос и ответ, может изменить их или завершить обработку, а может передать управление дальше через next().

Как это работает

Express собирает приложение в цепочку: запрос проходит middleware и обработчики в том порядке, в каком они зарегистрированы.

import express from 'express';

const app = express();

app.use(express.json());                       // 1. разбор тела запроса
app.use((req, res, next) => {                  // 2. логирование
  console.log(req.method, req.url);
  next();
});
app.get('/users/:id', async (req, res, next) => { // 3. обработчик
  try {
    res.json(await findUser(req.params.id));
  } catch (err) {
    next(err);                                 // передаём в обработчик ошибок
  }
});
app.use((err, req, res, next) => {             // 4. обработчик ошибок (4 аргумента)
  res.status(500).json({ message: 'Internal error' });
});

Важные правила

  • Порядок регистрации критичен: express.json() должен идти до маршрутов, которым нужно тело.
  • Middleware, который не вызвал next() и не ответил, подвесит запрос.
  • Обработчик ошибок определяется четырьмя аргументами и ставится последним.

Коротко для собеседования

Middleware — звенья цепочки обработки запроса. Порядок важен, ошибки передаются через next(err), а централизованный обработчик ловит их в конце.

Другие вопросы раздела