Я хотел бы знать, как использовать дополнительное промежуточное ПО в маршрутах Express, чтобы оно выглядело примерно так:
router.post("/findAvailableAgents", middleware1 || middleware2, (req, res))
Можете ли вы запрограммировать промежуточное ПО 3, чтобы использовать то же самое?
Я определяю промежуточное ПО1 или промежуточное ПО2 на основе токенов, отправленных с запросом. Если токены действительны, запрос может пройти через запрос отклонения else.
@Moak, как бы ты посоветовал мне это сделать?
Теперь вы можете добавить несколько промежуточных программ, используя приведенный ниже фрагмент кода.
app.get('/',[middleware.requireAuthentication,middleware.logger], function(req, res){
res.send('Hello!');
});
Это не работает. Возможно, мне следует внести ясность в свой вопрос. Мне нужно использовать промежуточное программное обеспечение для обработки запросов.
Вот идея. app.get ('/', middleware1, middleware2, function (req, res) {res.send ('Hello!');}); У нас есть два промежуточного программного обеспечения. Теперь передайте результат от промежуточного программного обеспечения 1 промежуточному программному обеспечению 2. Ссылка: stackoverflow.com/questions/18875292/… @DaveKalu
Нет, мне не нужно передавать запрос следующему промежуточному программному обеспечению. Мне нужно отклонить или разрешить запрос, если он действителен. Вот почему я подумал, что оператор «или» будет работать.
Вы можете использовать другой промежуточное ПО, который решает, выбрать промежуточное ПО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);
как определить, нужно ли использовать промежуточное ПО1 или промежуточное ПО2?