带斜杠的Express.js路由参数

Ger*_*ann 27 node.js express

我有一个提供文件列表的应用程序.

应用程序必须响应以下路由:

/company/:id
/company/:id/dir
/company/:id/dir/dir
Run Code Online (Sandbox Code Playgroud)

/company/:id是一个没有path指定例如root目录的路由.我在想一些app.get('/company/:id/:path', ...显然不起作用的东西.

如何定义响应所有示例的路线?

Pri*_*orn 58

使用/company/:id*(注意尾随星号).

完整的例子

var express = require('express')();

express.use(express.router);

express.get('/company/:id*', function(req, res, next) {
    res.json({
        id: req.params['id'],
        path: req.params[0]
    });    
});

express.listen(8080);
Run Code Online (Sandbox Code Playgroud)

  • 或者`/ company /:id*`(没有斜线). (4认同)
  • @NhưLàMơ `:id*` 将 params 转换为数组。因此 :slug 部分在 params 对象中被赋予“slug”命名属性(假设您的路径是 `/:slug*`),然后第 0 个索引是路径的匹配部分的其余部分。 (4认同)