Что такое 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), а централизованный обработчик ловит их в конце.