2017-12-18 5 views
0

Express를 사용하여 API를 빌드했습니다. 내 경로가 파일에서 내가 가진 :Nodejs, Express, routes

app.route('/getBalances') 
     .post(api.getBalances); 

api.getBalances를 매개 변수에 따라라는 게시물을 통해 보내 "차량"의 예에서,로드 및 getBalances 메소드를 호출 할 수있는 올바른 컨트롤러 인 첫번째 가져옵니다

var controller = commonModel.getController(query.vehicle.toLowerCase()); 
controller.getBalances(); 

getBalances 만 가지고있는 유일한 진입 점이 아니므로 모든 진입 점을 호출하는 "전역"메소드를 호출 할 수 있는지 궁금 해서요. 그런 식으로 올바른지 식별 할 필요가 없습니다. 컨트롤러는 각 방법에 있지만 전역 방법에 있습니다.

미리 도움을 주셔서 감사합니다.

답변

2

API 경로를 추가하기 전에 실행할 예비 미들웨어를 사용하십시오. 예 :

// This middleware has to be added first. 
app.use(function(req, res, next) { 

    var query = req.query; // or `req.body`, whatever you like 
    if (query && query.vehicle) { 
    req.controller = commonModel.getController(query.vehicle.toLowerCase()); 
    } 

    next(); // delegate request to the next routes 

}); 

// Now add specific api middlewares. 
app.route('/getBalances') 
    .post(function(req, res) { 

    var controller = req.controller; // we've populated this earlier 
    res.send(controller.getBalances()); 

    }); 

app.route('/anotherMethod') 
    .post(function(req, res) { 

    var controller = req.controller; 
    // etc. 

    });