Средний

Middleware и жизненный цикл запроса

Урок 3 из 3 в курсе Веб-фреймворк: как он устроен

Содержание курса (3/3)

Middleware и жизненный цикл запроса

middleware — цепочка функций, которые обрабатывают запрос до и после контроллера.

Почему это важно: Большая часть 'фреймворкового' поведения — это middleware: аутентификация, логирование, CORS, парсинг. Понимание цепочки критично для отладки.

Главная идея

Каждый middleware получает запрос, может его изменить или остановить, и передаёт дальше по цепочке.

Как это выглядит на практике

  1. Запрос приходит в приложение.
  2. Сначала проходит middleware логирования.
  3. Затем парсер тела (body parser).
  4. Дальше middleware аутентификации: проверяет токен, кладёт user в request.
  5. Наконец попадает в контроллер с уже обогащённым контекстом.

Что происходит под капотом

  • Rack (Ruby), WSGI (Python), Express middleware — разные реализации одного паттерна.
  • Middleware может быть синхронным или асинхронным.
  • Порядок middleware критичен: логирование до или после auth даёт разные результаты.
  • Некоторые middleware 'заканчивают' запрос (например, возвращают 401) не доходя до контроллера.

Типичные ошибки и заблуждения

  • Ошибка: middleware — это редко используемая штука. На практике в каждом запросе проходит 10+ middleware.
  • Ошибка: порядок неважен. Часто 99% багов — именно из-за неправильного порядка.
  • Ошибка: middleware может только читать запрос. Он может менять его (и часто это делает).
  • Ошибка: вставлять бизнес-логику в middleware — хорошая идея. Это мешает тестировать и понимать поток.

Ключевые выводы

  • Middleware — цепочка, а не отдельные функции.
  • Порядок определяет поведение.
  • Middleware отлично подходит для cross-cutting concerns: auth, logging, CORS.
  • Не кладите бизнес-логику в middleware.

Термины урока

Middleware: функция-обработчик в цепочке запроса.
Rack/WSGI: интерфейсы между сервером и приложением.
Cross-cutting concern: функциональность, пронизывающая всё приложение (логирование, безопасность).
Request lifecycle: путь запроса от приёма до ответа.

Связь с работой backend-разработчика

Опытный backend-разработчик думает о запросе как о потоке через middleware. Это помогает быстро понимать, где происходят заголовки, аутентификация, трансформации.

Мини-разбор реальной ситуации

Команда добавила CORS-middleware после auth-middleware — и браузер начал получать 401 вместо CORS-заголовков. Перестановка решила проблему.

Что запомнить

  • Запрос — это поток через цепочку.
  • Порядок middleware важен всегда.
  • Middleware идеален для cross-cutting concerns.

Итог

Middleware — это элегантный способ разделить ответственности в приложении, но требует аккуратности в порядке подключения.

Комментарии к уроку

Войдите, чтобы оставить комментарий.

Пока нет комментариев — будьте первым.