基于 express.js 中请求参数的动态路由
dynamic routing based on request parameter in express.js
我正在使用 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 的特定函数,它是 url
中的一个参数
'use strict';
module.exports = function(app) {
var jsvalidator = require('../controllers/jsvalidatorController');
app.route('/chall/:challId')
.get(/*jsvalidator.validateChall_ + req.params.challId*/);
};
是否可以根据challId参数直接路由到特定函数?
你可以这样做
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
}
我正在使用 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 的特定函数,它是 url
中的一个参数'use strict';
module.exports = function(app) {
var jsvalidator = require('../controllers/jsvalidatorController');
app.route('/chall/:challId')
.get(/*jsvalidator.validateChall_ + req.params.challId*/);
};
是否可以根据challId参数直接路由到特定函数?
你可以这样做
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
}