Короткий ответ
Middleware — это слой кода, через который проходит каждый запрос перед view и каждый ответ после view; при запросе middleware вызываются в порядке объявления, при ответе — в обратном порядке.
Как это работает подробнее
Middleware оборачивают основной обработчик, как «матрёшка»: первый middleware в списке вызывает следующий, тот — следующий, и так до самого view; ответ возвращается по той же цепочке в обратном направлении.
Пример кода
example.txt
Порядок в конфигурации: [A, B, C]
Запрос: A.before -> B.before -> C.before -> view
Ответ: view -> C.after -> B.after -> A.after
Проверка: добавить в каждый middleware print/log с именем
на "before" и "after" этапах и убедиться, что порядок логов
соответствует схеме выше.Что использовать на практике
- Практика. Middleware используют для сквозных задач: логирования, аутентификации, сжатия ответа, обработки CORS. Порядок важен — например, middleware аутентификации должен стоять до middleware, которому нужен текущий пользователь.
Подводные камни
- Риск. Думают, что middleware выполняются независимо друг от друга, а не как обёртки; размещают middleware, изменяющий
request, после middleware, которому нужны эти изменения.