Middleware в Node.js/EXPRESS
Middleware используется для того, чтобы разделить различные этапы обработки запросов (авторизация, валидация, парсинг входных данных в удобный формат, основная логика) на промежуточные обработчики.
Обработчики, в ходе их выполнения решают передавать запрос следующем обработчике, или остановить обработку запроса и немедленно отдать клиенту какой-то ответ (обычно ошибку).
Middleware мы будем использовать для анализа, изменения запроса до отправки его в контроллер.
Создадим самый примитивный middleware, который будет проверять авторизован ли пользователь, если нет, то будет выбрасывать ошибку 401
Создадим в src файл:
$ touch auth.middleware.js
В варианте продакшена мы должны анализировать токен, но здесь мы просто проверим его наличие в графе res.headers.authorization
server.js
Импортируем наш middleware:
import { authMiddleware } from "./src/auth.middleware.js";
Вставляем его в тот раздел, где нужно проверить авторизацию,
Например глобально
Тогда мы при любом запросе без авторизации получим ошибку 401
Если же мы авторизуемся:
Можно Middleware добавить не глобально, а к нашим запросам по пути /api
Тогда на запросы к любым другим адресам middleware не сработает: