Подтвердить что ты не робот

Объединение нескольких компонентов промежуточного программного обеспечения для определенного маршрута в ExpressJS

Я хочу просто проверить что-то, но не смог найти что-либо в документах Express или в Интернете относительно этого (хотя я знаю, что это функция).

Я мог бы просто проверить это, но у меня нет хорошего шаблона и хотелось бы услышать от сообщества.

Если я определяю маршрут в выражении вроде:

app.get('/', function (req, res) {
  res.send('GET request to homepage');
});

Я также могу определить промежуточное программное обеспечение и загрузить его напрямую, например

middleware = function(req, res){
  res.send('GET request to homepage');
});

app.get('/', middleware)

Тем не менее, я также могу связать по крайней мере один из этих маршрутов для запуска дополнительного промежуточного программного обеспечения, такого как аутентификация, как таковой:

app.get('/', middleware, function (req, res) {
  res.send('GET request to homepage');
});

Являются ли эти бесконечно цепочки? Могу ли я использовать 10 промежуточных функций на заданном маршруте, если захочу? Я хочу видеть параметры, которые app.get может принять, но, как упоминалось, я не могу найти его в документах.

4b9b3361

Ответ 1

Он не говорит "бесконечно", но он говорит, что вы можете добавить несколько функций промежуточного слоя (называемых "обратными вызовами" в документации) здесь:

router.METHOD(обратный вызов пути, [обратный вызов,...])

...

Вы можете предоставить несколько обратных вызовов, и все они обрабатываются одинаково и ведут себя как промежуточное программное обеспечение, за исключением того, что эти обратные вызовы могут вызывать следующий ( "маршрут" ), чтобы обойти оставшиеся обратные вызовы. Вы можете использовать этот механизм для выполнения предварительных условий на маршруте, а затем передать управление последующим маршрутам, когда нет причин для продолжения согласованного маршрута.

Как вы можете видеть, не существует различия между функцией промежуточного программного обеспечения и функцией, которая обычно обрабатывает запрос (тот, который обычно является последней функцией, добавленной в список).

Наличие 10 не должно быть проблемой (если вам действительно нужно).

Ответ 2

рассмотрим ниже пример

var middleware = {
    requireAuthentication: function(req, res, next){
        console.log('private route list!');
        next();
    },
    logger: function(req, res, next){
       console.log('Original request hit : '+req.originalUrl);
       next();
    }
}

Теперь вы можете добавить несколько промежуточных программ, используя ниже фрагмент кода

app.get('/', [middleware.requireAuthentication,middleware.logger], function(req, res){
    res.send('Hello!');
});

Итак, сверху выше фрагмента кода вы можете видеть, что "requireAuthentication" и "logger" - это два разных добавленных средства.