【问题标题】:Express.js route parameter with slashes [duplicate]带有斜杠的 Express.js 路由参数[重复]
【发布时间】:2013-05-25 15:40:03
【问题描述】:

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

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

/company/:id
/company/:id/dir
/company/:id/dir/dir

这里的/company/:id 是一个没有指定path 的路由,例如root 目录。我正在考虑类似app.get('/company/:id/:path', ... 的东西,这显然行不通。

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

【问题讨论】:

标签: node.js express


【解决方案1】:

使用/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);

【讨论】:

  • /company/:id*(不带斜线)。
  • @robertklep 完美,可以处理所有情况
  • 当我请求 /aaaa/adfadf/fasdfa 时,路由参数是 { '0': 'adfadf/fasdfa', slug: 'aaaa' } 。我不知道密钥“0”从何而来
  • @NhưLàMơ :id* 将参数转换为数组。所以 :slug 部分在 params 对象中被赋予了“slug”命名属性(假设你的路径是/:slug*),然后第 0 个索引是路径匹配部分的其余部分。
猜你喜欢
  • 2015-09-07
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 2019-05-22
  • 2011-05-15
  • 2015-09-06
  • 1970-01-01
  • 2021-10-30
相关资源
最近更新 更多