Выбор ответа Middle net/http и middleware спрашивают часто обновлено

Порядок выполнения middleware

Вопрос

Есть h := A(B(C(mux))), где каждый middleware логирует «до» и «после» вызова next. В каком порядке появятся строки?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: A до, B до, C до, обработчик, C после, B после, A после. Внешняя обёртка получает запрос первой и вызывает следующую.

Варианты ответа

  1. A до, B до, C до, обработчик, C после, B после, A послеправильный ответ
  2. C до, B до, A до, обработчик, A после, B после, C после
  3. A до, A после, B до, B после, C до, C после
  4. Порядок не определён, middleware идут параллельно

Разбор

Внешняя обёртка получает запрос первой и вызывает следующую. Возврат идёт в обратном порядке, как раскрутка стека. Поэтому recover и логирование ставят снаружи, чтобы они видели всё, что внутри, а авторизацию ближе к роутеру. Параллельности между middleware одного запроса нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме