Использование дополнительного промежуточного программного обеспечения в Express JS

Я хотел бы знать, как использовать дополнительное промежуточное ПО в маршрутах Express, чтобы оно выглядело примерно так:

router.post("/findAvailableAgents", middleware1 || middleware2, (req, res))

как определить, нужно ли использовать промежуточное ПО1 или промежуточное ПО2?

duxfox-- 13.09.2018 16:33

Можете ли вы запрограммировать промежуточное ПО 3, чтобы использовать то же самое?

Moak 13.09.2018 16:34

Я определяю промежуточное ПО1 или промежуточное ПО2 на основе токенов, отправленных с запросом. Если токены действительны, запрос может пройти через запрос отклонения else.

Dave Kalu 13.09.2018 16:35

@Moak, как бы ты посоветовал мне это сделать?

Dave Kalu 13.09.2018 16:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
4
1 560
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

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

Это не работает. Возможно, мне следует внести ясность в свой вопрос. Мне нужно использовать промежуточное программное обеспечение для обработки запросов.

Dave Kalu 13.09.2018 16:38

Вот идея. app.get ('/', middleware1, middleware2, function (req, res) {res.send ('Hello!');}); У нас есть два промежуточного программного обеспечения. Теперь передайте результат от промежуточного программного обеспечения 1 промежуточному программному обеспечению 2. Ссылка: stackoverflow.com/questions/18875292/… @DaveKalu

Prasanta Bose 13.09.2018 16:42

Нет, мне не нужно передавать запрос следующему промежуточному программному обеспечению. Мне нужно отклонить или разрешить запрос, если он действителен. Вот почему я подумал, что оператор «или» будет работать.

Dave Kalu 13.09.2018 16:59
Ответ принят как подходящий

Вы можете использовать другой промежуточное ПО, который решает, выбрать промежуточное ПО1 или промежуточное ПО2

const decideMiddleware = (req, res, next) => {
    if (condition) {
        return middleware1(req, res,next)
    } else {
        return middleware2(req, res,next)
    }
}

И используйте это в своем коде

router.post("/findAvailableAgents", decideMiddleware, (req, res))

Есть два способа добиться необязательного поведения промежуточного программного обеспечения:

1) Создайте другое промежуточное программное обеспечение, которое проверяет состояние, а затем передает все параметры в желаемое промежуточное программное обеспечение. Пример:

const middlewareStrategy = (req,res,next) => {
    if (req.body.token1){
        return middleware1(req,res,next);
    }
    return middleware2(req,res,next);
};

router.post("/findAvailableAgents", middlewareStrategy, handler);

2) Сделайте выполнение логики промежуточного программного обеспечения управляемым условием. Пример:

const middleware1 = (req,res,next) => {
    if (req.body.token){
        // execute some logic, then
        return next();
    }
    // skip this middleware
    next();
};

router.post("/findAvailableAgents", middleware1, middleware2, handler);

Другие вопросы по теме