Выбор ответа Junior HTTP-сервер, Express, NestJS обновлено

Порядок middleware в Express

Вопрос

Что увидит клиент при GET /admin без авторизации?

app.get('/admin', (req, res) => res.send('secret'));
app.use((req, res, next) => {
  if (!req.user) return res.status(401).send('no');
  next();
});

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

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

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

Коротко

Правильный ответ: secret. Express проходит обработчики в порядке регистрации.

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

  1. 401 no
  2. 500: middleware зарегистрирован неправильно
  3. 404
  4. secretправильный ответ

Разбор

Express проходит обработчики в порядке регистрации. Роут /admin стоит раньше проверки и сразу отвечает. До middleware авторизации дело не доходит. Проверку нужно регистрировать раньше роутов или вешать на сам роут.

  • 401 был бы при обратном порядке.
  • 404 был бы без подходящего роута.
  • Регистрация корректна синтаксически, ошибки нет.

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

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