如何在功能中访问路径?

时间:2017-08-08 17:12:34

标签: node.js express

在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);
}

基本要求:能够在功能中访问路径。

3 个答案:

答案 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