13

我不能app.use在 Express 4.16.2 上使用路由参数。

我有这样的声明:

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.

在我进行研究时,我收到了这个 GitHub 问题和这个关闭问题的拉取请求。但似乎问题仍然存在。还是我做错了什么?

4

2 回答 2

32

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

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

请参阅文档:http ://expressjs.com/en/api.html

于 2017-12-23T13:27:45.443 回答
2

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

于 2017-12-23T09:32:58.377 回答