Тема, которая почему-то вообще не попадалась мне на глаза раньше, но оказалась полезной и достаточно несложной. Напомню, что ExpressJS - это фреймворк для более простой работы с вебсервером. Грубо говоря, если в "ванильном" варианте надо было работать с XMLHttpRequest-объектом (XHR) NodeJS'a, то в ExpressJS создается свой объект app, через каторый и идет взаимодействие с сервером. Так вот, маршрутизация предполагает, что серверная часть имеет эндпойнты (например, "/api"), при обращении к которым выполняются некоторые действия. Например:
app.get("/api", (req, res) => {
// code
})
Так вот, существует возможность указать некоторые функции, которые должны быть выполнены ПЕРЕД выполнением данного года. Для этого определяется некоторая функция, кроме req и res она принимает параметр next, который вызывается в конце этой функции, чтобы передать выполнение следующему middleware или собственно основному коду (если надо выдать ошибку, она передается как параметр внутри next(error), никакой другой параметр там передаваться не может). Например:
const middleware = (req, res, next) => {
// code
next();
}
Чтобы подключить middleware, надо указать:
app.use("/api", middleware);
Если указать без указания на рут, middleware будет "подключено" глобально, то есть будет выполняться в любом руте:
app.use(middleware);
Ну и, разумеется middleware, как и любой кусок кода можно импортировать извне, а внутри только подключать.
Комментариев нет:
Отправить комментарий