在app.js中,我需要处理几个类似的路线,如下所示。
app.get('/path1', function(req, res) {
var path = some_processing_based_on_path('/path1');
res.render(path);
}
我想把它们“挤”成一条共同的路线。这就是我的想法。
app.get('/path*', function(req, res) {
var path = some_processing_on_path(???);
res.render(path);
}
基本要求:能够在功能中访问路径。
答案 0 :(得分:2)
您可以使用req.path
获取请求的路径:
app.get('/path*', function(req, res) {
var path = some_processing_on_path(req.path)
res.render(path)
})
您还可以使用req.params
访问命名路径参数:
app.get('/path:id', function(req, res) {
var path = some_processing_on_path(req.params.id)
res.render(path)
})
答案 1 :(得分:0)
您可以将函数传递给控制器,然后为所有要使用的控制器定义函数。
这是一个例子:
module.exports = function (app, insecureApp) {
router.post('/your/path/modification', upsert);
router.put('/your/path/modification/2', upsert);
function upsert(req, res, next) {
model.findOneAndUpdate({_id: req.body.name}, req.body, {upsert: true}, function (err, docs){
if (err) return next(err);
res.json("document successfully updated");
});
}
// apply this router to the following path
app.use('/your/base/path/here', router);
};
答案 2 :(得分:0)
尝试在特殊符号之前添加转义字符,即
app.get ('/path\*',...)
您可以使用以下网址访问路径:req.path