Архив рубрики ~Полезное~

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

Что такое 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, ведь именно он определяет, как будет обработан запрос.

Источник

❌ Нет тегов для этой статьи

Оцените материал:

Поделиться
Понравилась статья? Расскажите другим
ВКонтакте
Читайте также
Архив рубрики ~Лента новостей~ Генеральный директор антропогенной компании изложил план по освоению новых территорий. Архив рубрики ~Лента новостей~ Suno v6: тихая революция, которую не сразу слышно в готовом сведении Архив рубрики ~Обо всем~ Физик производит расчеты «маневра Пикарда» из «Звездного пути». Новости робототехники Ультразвук предлагает масштабируемый путь к тактильному интеллекту для физического ИИ Архив рубрики ~Лента новостей~ Конфликт OpenAI с математиками только обостряется. Архив рубрики ~Лента новостей~ OpenAI и Anthropic начали переманивать топ-менеджеров Meta*, Google, Amazon и Microsoft для экспансии в Азии — таких специалистов мало, а спрос на них растёт Архив рубрики ~Лента новостей~ Компания Khosla Ventures открывает офис в Нью-Йорке этой осенью — свой первый филиал за пределами Сэнд-Хилл-Роуд. Архив рубрики ~Лента новостей~ «Сбер» представил «рассуждающую» модель GigaChat 3.5 Reasoning с открытыми весами Архив рубрики ~Коротко из Telegram~ Россия выделяется плотной связкой университетов и компаний в ИИ-исследованиях Наукометрический… Архив рубрики ~Коротко из Telegram~ Россияне начали прокачивать резюме мемами — и ИИ-рекрутеры ведутся Кандидаты… Архив рубрики ~Коротко из Telegram~ Suno выпустила V6 — теперь с лицензированной музыкой и точечным… Архив рубрики ~Лента новостей~ GPT-6 Astra «заработала» в три раза больше Fable 5.1 в тесте с торговым автоматом — в среднем более $15 тысяч Архив рубрики ~Коротко из Telegram~ DeepSeek выпустила V4.1-Flash — и «Flash» здесь не значит «слабая»… Архив рубрики ~Коротко из Telegram~ Один вопрос вместо трёх переделок Стандартный сценарий: пишете задачу… Архив рубрики ~Лента новостей~ Генеральный директор антропогенной компании изложил план по освоению новых территорий. Архив рубрики ~Лента новостей~ Suno v6: тихая революция, которую не сразу слышно в готовом сведении Архив рубрики ~Обо всем~ Физик производит расчеты «маневра Пикарда» из «Звездного пути». Новости робототехники Ультразвук предлагает масштабируемый путь к тактильному интеллекту для физического ИИ Архив рубрики ~Лента новостей~ Конфликт OpenAI с математиками только обостряется. Архив рубрики ~Лента новостей~ OpenAI и Anthropic начали переманивать топ-менеджеров Meta*, Google, Amazon и Microsoft для экспансии в Азии — таких специалистов мало, а спрос на них растёт Архив рубрики ~Лента новостей~ Компания Khosla Ventures открывает офис в Нью-Йорке этой осенью — свой первый филиал за пределами Сэнд-Хилл-Роуд. Архив рубрики ~Лента новостей~ «Сбер» представил «рассуждающую» модель GigaChat 3.5 Reasoning с открытыми весами Архив рубрики ~Коротко из Telegram~ Россия выделяется плотной связкой университетов и компаний в ИИ-исследованиях Наукометрический… Архив рубрики ~Коротко из Telegram~ Россияне начали прокачивать резюме мемами — и ИИ-рекрутеры ведутся Кандидаты… Архив рубрики ~Коротко из Telegram~ Suno выпустила V6 — теперь с лицензированной музыкой и точечным… Архив рубрики ~Лента новостей~ GPT-6 Astra «заработала» в три раза больше Fable 5.1 в тесте с торговым автоматом — в среднем более $15 тысяч Архив рубрики ~Коротко из Telegram~ DeepSeek выпустила V4.1-Flash — и «Flash» здесь не значит «слабая»… Архив рубрики ~Коротко из Telegram~ Один вопрос вместо трёх переделок Стандартный сценарий: пишете задачу…