簡體   English   中英

在Express JS中使用可選的中間件

[英]Using optional middleware in Express JS

我想知道在Express路由中使用可選的中間件看起來像這樣:

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

您可以使用另一個中間件來決定是選擇middleware1還是middleware2

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

現在,您可以使用下面的代碼添加多個中間件

 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