Middleware и жизненный цикл запроса
middleware — цепочка функций, которые обрабатывают запрос до и после контроллера.
Почему это важно: Большая часть 'фреймворкового' поведения — это middleware: аутентификация, логирование, CORS, парсинг. Понимание цепочки критично для отладки.
Главная идея
Каждый middleware получает запрос, может его изменить или остановить, и передаёт дальше по цепочке.
Как это выглядит на практике
- Запрос приходит в приложение.
- Сначала проходит middleware логирования.
- Затем парсер тела (body parser).
- Дальше middleware аутентификации: проверяет токен, кладёт user в request.
- Наконец попадает в контроллер с уже обогащённым контекстом.
Что происходит под капотом
- 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.
Термины урока
Связь с работой backend-разработчика
Опытный backend-разработчик думает о запросе как о потоке через middleware. Это помогает быстро понимать, где происходят заголовки, аутентификация, трансформации.
Мини-разбор реальной ситуации
Команда добавила CORS-middleware после auth-middleware — и браузер начал получать 401 вместо CORS-заголовков. Перестановка решила проблему.
Что запомнить
- Запрос — это поток через цепочку.
- Порядок middleware важен всегда.
- Middleware идеален для cross-cutting concerns.
Итог
Middleware — это элегантный способ разделить ответственности в приложении, но требует аккуратности в порядке подключения.
Комментарии к уроку
Войдите, чтобы оставить комментарий.
Пока нет комментариев — будьте первым.