Код Middle HTTP, WSGI и ASGI обновлено
Цепочка middleware вокруг приложения
Условие
Middleware это функция mw(handler) -> handler. Напишите build(app, middlewares): оберните приложение так, чтобы первый в списке middleware был самым внешним (как в MIDDLEWARE Django). Проверка: каждое middleware дописывает своё имя в лог до и после вызова; run(names) возвращает лог и результат.
Примеры
run(["security", "session", "auth"]) // [["security:in", "session:in", "auth:in", "view", "auth:out", "session:out", "security:out"], "response"]
run([]) // [["view"], "response"]
run(["a"]) // [["a:in", "view", "a:out"], "response"]
Как подойти
Подсказки: 1
- Оборачивайте в обратном порядке:
for mw in reversed(middlewares).
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.