简体   繁体   English

在Express JS中使用可选的中间件

[英]Using optional middleware in Express JS

我想知道在Express路由中使用可选的中间件看起来像这样:

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

You could use another middleware which decides whether to choose middleware1 or middleware2 您可以使用另一个中间件来决定是选择middleware1还是middleware2

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

And use it in your code 并在您的代码中使用它

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

There is two ways of achieve optional middleware behaviour: 有两种方法可以实现可选的中间件行为:

1) Create another middleware, that checks condition and then passes all the parameters into the desired middleware. 1)创建另一个中间件,检查条件,然后将所有参数传递到所需的中间件。 Example: 例:

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) Make middleware logic execution in a condition-driven manner. 2)以条件驱动的方式执行中间件逻辑执行。 Example: 例:

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);

Now you can add multiple middleware using a below peice of code 现在,您可以使用下面的代码添加多个中间件

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM