在 Express 上使用带有 `app.use` 的路由参数

Use route parameters with `app.use` on Express

我无法在 Express 4.16.2 上使用 app.use 的路由参数。

我有这样的声明:

app.use('/course-sessions/:courseSessionId/chapter-sessions', chapterSessionsRouter)

并且,在章节会话路由器中:

// Index.
router.get('/', ...resource.indexMethods)

当我得到'/course-sessions/0/chapter-sessions/'时,我有404。

然后我正在尝试这样的声明:

app.get('/course-sessions/:courseSessionId/chapter-sessions', ...chapterSessionResource.indexMethods)

现在我得到了我想要的结果。所以路由参数不适用于 app.use.

在我研究的过程中,我得到了 this GitHub issue and this pull request 来关闭问题。但似乎问题仍然存在。还是我做错了什么?

我只会做 app.use('/course-sessions/', chapterSessionsRouter) 并处理路由器内部的 id。

您必须以不同的方式设置路由器,请尝试使用 mergeParams 访问父路由中的参数。

let router = express.Router({ mergeParams: true });

查看文档:http://expressjs.com/en/api.html