JET School

Что такое Middleware?

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

Проще говоря, middleware — это «прослойка» между запросом (request) и ответом (response), которая может:

  • анализировать,
  • изменять,
  • записывать в журнал (логировать),
  • проверять безопасность и авторизацию,
  • или принимать/отклонять запросы.

Как работает Middleware?

  1. Пользователь отправляет запрос к серверу (например, форму входа).
  2. Запрос проходит через одно или несколько промежуточных программ (middleware).
  3. Каждое middleware может:
  • проверить данные (например, верный ли логин/пароль),
  • модифицировать запрос (например, добавить заголовки),
  • записать логи,
  • прекратить выполнение, если, например, пользователь не авторизован.
  1. После проверки запрос передаётся в основной обработчик (например, кода, который достаёт данные из базы).
  2. Ответ от сервера тоже может пройти через middleware перед отправкой клиенту.

Где используется Middleware?

Middleware широко используется во всех популярных backend-фреймворках:

  • Express.js (для Node.js)
  • Пример: app.use(), app.get(), app.post()
  • Применение: логирование, проверка токенов, CORS и пр.
  • Django (Python)
  • Промежуточные компоненты задаются в списке MIDDLEWARE в настройках проекта.
  • Применение: управление сессиями, безопасность, переадресация.
  • Также используется в ASP.NET, Laravel, FastAPI, и других системах.

Типы Middleware:

  1. Глобальные middleware – применяются ко всем маршрутам.
  2. Маршрутные (route-specific) – применяются только к определённым адресам.
  3. Обработка ошибок – перехватывают и обрабатывают исключения.
  4. Кастомные (собственные) – написаны вручную под конкретные задачи.

Пример на Express.js:

const express = require('express');

const app = express();


// Простое middleware для логирования

app.use((req, res, next) => {

console.log(`${req.method} ${req.url}`);

next(); // передать управление следующему middleware

});


// Middleware для авторизации

function authMiddleware(req, res, next) {

if (req.headers.authorization === "secret-token") {

next();

} else {

res.status(401).send('Доступ запрещён');

}

}


// Применение к определённому маршруту

app.get('/dashboard', authMiddleware, (req, res) => {

res.send('Панель администратора');

});


app.listen(3000, () => console.log('Сервер запущен'));

Зачем нужен middleware?

  • Упрощает структуру и читаемость кода
  • Позволяет централизованно управлять логикой безопасности, логами и проверками
  • Повышает производительность и гибкость
  • Поддерживает модульность и возможность масштабирования

Связанные термины:

Присоединяйтесь к нашим курсам для углубленного изучения области ИТ. Отправьте запрос для получения подробной информации!