[英]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.