it Новини Що таке middleware? Приклади в Express, FastAPI та інших фреймворках
Що таке middleware? Приклади в Express, FastAPI та інших фреймворках

Що таке middleware? Приклади в Express, FastAPI та інших фреймворках

3 477
03 липня 2025 в 10:01

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())

Курс з вивчення 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
  • Підтримує асинхронні функції
  • Дозволяє змінювати як запит, так і відповідь

Курс з вивчення 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
  • Зміна/фільтрація вхідних даних
  • Компресія, кешування, throttle


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

Telegram group

Підписуйтесь на нашу групу в Телеграмі 🇺🇦

Більше цікавих новин

Коментарі
Додати коментар

Поки що коментарів немає