Закажи экспресс-аудит своего дела онлайн всего за 199 ₽
и получи рекомендации по улучшению - Жми сюда !

Что такое middleware? Примеры в Express, FastAPI и других фреймворках

Что такое middleware? Примеры в Express, FastAPI и других фреймворках

Что такое middleware? Примеры в Express, FastAPI и других фреймворках

Middleware — это важный механизм современных фреймворков. Он помогает обработать дополнительные действия внутри программы. Рассмотрим примеры использования в Express, FastAPI и других системах.

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

Как это работает на общем уровне?

Когда поступает HTTP-запрос, сервер не обязательно сразу передаёт его главному обработчику (то есть функции, которая формирует ответ). Сначала он может пройти через несколько middleware-функций — каждая из которых либо что-то делает с запросом, либо проверяет, можно ли запросу двигаться дальше. Некоторые middleware могут полностью остановить дальнейшую обработку, например, если токен недействителен.

Middleware в Express.js

Express.js — один из самых популярных фреймворков Node.js, и в нём концепция middleware — основа всей архитектуры. Middleware в Express — это функции, которые имеют доступ к объекту запроса (req), объекту ответа (res) и следующей функции в цепочке (next).

Вот базовый пример middleware в Express:

// Простой middleware function logger(req, res, next) { console.log(`${req.method} ${req.url}`); next(); // обязательно вызвать, чтобы передать управление дальше } app.use(logger); // применяем middleware глобально

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

Типы middleware в Express:

    Глобальные (app.use(…))Маршрутные (app.get('/path', middleware, handler))Обработчики ошибок (с 4-мя параметрами: err, req, res, next)Встроенные (например, express.json())

Что такое middleware? Примеры в Express, FastAPI и других фреймворках

Курс изучения JavaScript

Можете пройти наш бесплатный курс по изучению JavaScript

Middleware в FastAPI

FastAPI — это фреймворк на Python, который поддерживает асинхронность и типизацию. В нём middleware также выполняется на каждый HTTP-запрос, если оно подключено. Middleware здесь — это функции, которые выполняются до и после того, как запрос дойдёт до основного маршрута.

Вот пример middleware в FastAPI:

from fastapi import FastAPI, Request from starlette.middleware.base import BaseHTTPMiddleware app = FastAPI() # Создание middleware-класса class LoggerMiddleware(BaseHTTPMiddleware): async def dispatch(self, request: Request, call_next): print(f»Запрос: {request.method} {request.url}») response = await call_next(request) # Передаём запрос дальше return response # Добавление middleware в FastAPI app.add_middleware(LoggerMiddleware)

В FastAPI middleware также может выполнять валидацию токенов, логирование, изменять заголовки или перехватывать исключения. Порядок выполнения middleware также имеет значение: первым зарегистрированное — первым и выполняется.

Особенности FastAPI middleware:

    Использует классы на базе BaseHTTPMiddlewareПоддерживает асинхронные функцииПозволяет изменять как запрос, так и ответ

Что такое middleware? Примеры в Express, FastAPI и других фреймворках

Курс изучения Python

Можете пройти наш бесплатный курс по изучению Python

Middleware в других фреймворках

В большинстве современных фреймворков, таких как Laravel (PHP), ASP.NET (C#), Django (Python), Koa (Node.js), существует аналогичная концепция middleware. Хотя реализация отличается, идея одна и та же — это слой между HTTP-запросом и конечной точкой обработки.

Например, в Laravel middleware — это классы, которые можно применять к группам маршрутов или отдельным маршрутам. В Django — это функции или классы, которые оборачивают обработку запроса. В Koa middleware реализовано как стек функций, работающих на основе async/await.

Сравнение: Express, FastAPI, Laravel, Django

Фреймворк Тип middleware Формат
Express Функции function(req, res, next)
FastAPI Классы class BaseHTTPMiddleware
Laravel Классы handle($request, Closure $next)
Django Классы или функции __call__ или process_view()

Когда использовать middleware

Middleware — идеальный инструмент, когда нужно применить повторяющуюся логику к большому количеству маршрутов. Наиболее типичные сценарии:

    Логирование запросовПроверка аутентификацииОбработка ошибокНастройка CORSИзменение/фильтрация входящих данныхСжатие, кэширование, ограничение частоты запросов

При правильном использовании middleware позволяет сократить дублирование кода, повысить безопасность и улучшить поддержку проекта. Важно следить за порядком подключения middleware, ведь именно он определяет, как будет обработан запрос.

Источник

✅ Найденные теги: новости, Что

Нет других записей в этой рубрике.