Ответ
Express.js использует middleware-based подход. Каждый HTTP-запрос проходит через цепочку функций промежуточной обработки (middleware), которые выполняются последовательно в порядке их регистрации.
Ключевые моменты:
- Middleware имеет доступ к объектам запроса (
req), ответа (res) и функцииnext()для передачи управления следующему обработчику. - Он может выполнять любую операцию: логирование, парсинг тела запроса, аутентификацию, отправку ответа.
- Порядок регистрации через
app.use()и методы маршрутизации (app.get(),app.post()) критически важен.
Пример базового сервера:
const express = require('express');
const app = express();
// Middleware для логирования (выполняется для всех запросов)
app.use((req, res, next) => {
console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
next(); // Передаем управление дальше
});
// Middleware для парсинга JSON-тел запросов
app.use(express.json());
// Конечный обработчик маршрута
app.get('/api/users', (req, res) => {
res.json([{ id: 1, name: 'John' }]);
});
// Middleware для обработки 404 ошибок (регистрируется последним)
app.use((req, res) => {
res.status(404).send('Not Found');
});
app.listen(3000);
Такой подход обеспечивает гибкость, модульность и возможность повторного использования кода.