【问题标题】:dynamic routing based on request parameter in express.jsexpress.js中基于请求参数的动态路由
【发布时间】:2017-08-16 00:41:59
【问题描述】:

我正在使用 expressJS 构建一个 RESTful API,在我的控制器中,我有几个函数,例如 Chall_1、Chall_2、...

exports.validateChall_1 = function(res) {
//logic
  res.json(1);
};
exports.validateChall_2 = function(res) {
    res.json(2);
};
exports.validateChall_3 = function(res) {
    res.json(3);
};

在我的 router.js 中,我想将 URL 路由到基于 challId 的特定函数,challId 是 url 中的一个参数

'use strict';
module.exports = function(app) {
  var jsvalidator = require('../controllers/jsvalidatorController');
  app.route('/chall/:challId')
    .get(/*jsvalidator.validateChall_ + req.params.challId*/);
};

是否可以根据 challId 参数直接路由到特定函数?

【问题讨论】:

    标签: javascript node.js express routing dynamic-routing


    【解决方案1】:

    你可以做类似的事情

    app.route('/chall/:challId')
      .get(function (req, res, next) {
          switch (req.params.challId) {
            case 1:
             ctrl.validate_chall1(req, res, next);
             break;
            case 2:
             ctrl.validate_chall2();
             break;
            default:
             next() //it should continue to 404 route
             break;
      }
    });
    

    但我认为这样做更好地保持路线清洁

    app.route('/chall/challId/validate')
       .get(ctrl.validate)
    
    //in ctrl 
    function validate(req, res, next){
      if(req.params.challId === 1)
        validate_ctrl1()
      //etc
    }
    

    【讨论】:

      猜你喜欢
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 2020-04-11
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多