【问题标题】:Nodejs, Express, routesNodejs,快递,路线
【发布时间】:2017-12-18 06:14:47
【问题描述】:

我已经使用 express 构建了一个 api。在我的路线文件中,我有:

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

api.getBalances,取决于通过名为“vehicle”的帖子发送的参数,首先获取正确的控制器来加载并调用其 getBalances 方法,例如:

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

getBalances 不是我唯一的入口点,所以我想知道是否可以调用一个“全局”方法来调用每个入口点,这样我就不需要识别正确的控制器每个方法,但在全局方法上。

提前感谢您的帮助。

【问题讨论】:

    标签: node.js express routes


    【解决方案1】:

    使用将在添加任何 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.
    
      });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-11
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多