Выбор ответа 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 проходит обработчики в порядке регистрации.
Варианты ответа
- 401
no - 500: middleware зарегистрирован неправильно
- 404
secretправильный ответ
Разбор
Express проходит обработчики в порядке регистрации. Роут /admin стоит раньше проверки и сразу отвечает. До middleware авторизации дело не доходит. Проверку нужно регистрировать раньше роутов или вешать на сам роут.
- 401 был бы при обратном порядке.
- 404 был бы без подходящего роута.
- Регистрация корректна синтаксически, ошибки нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.