Могу ли я применить промежуточное программное обеспечение к маршруту на основе схемы маршрутов? - PullRequest
0 голосов
/ 08 июля 2019

В моем экспресс-приложении есть следующие маршруты.

router.route('/login').post(userCtrl.login);
router.route('/users').get(userCtrl.getAll);
router.route('/users/count').get(userCtrl.count);
router.route('/user').post(userCtrl.insert);
router.route('/user/:id').get(userCtrl.get);
router.route('/user/:id').put(userCtrl.update);
router.route('/user/:id').delete(userCtrl.delete);

И я хотел бы применить промежуточное ПО для всех маршрутов, начинающихся с '/user'.

например. У меня есть промежуточное ПО checkAuth, которое я хочу применить к любым маршрутам, связанным с пользователем, но не к /login.

Я пытался добавить код ниже, но не работает.

router.use("/user.*", checkAuth);

Позволяет ли Express настроить промежуточное ПО на основе схемы маршрутов?

1 Ответ

2 голосов
/ 08 июля 2019

В Express вы можете использовать app.use() или router.use() с таким путем, как:

router.use("/user", function(req, res, next) {
    console.log(req.url); 
    next();
});

Это будет вызывать это промежуточное ПО для любого URL, который первым сегментом пути является "/ user". Это будет включать все это:

/user
/user?foo=2
/user/something
/user/1/2

Если вы пытаетесь сопоставить любой URL-адрес, начинающийся с / user, вы можете использовать подстановочный знак Express, например:

router.use("/user*", function(req, res, next) {
    console.log(req.url); 
    next();
});

Это будет соответствовать всем вышеперечисленным, но также и этим:

/users
/users/something
/usersxyz
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...