【问题标题】:Use route parameters with `app.use` on Express在 Express 上使用带有 `app.use` 的路由参数
【发布时间】:2017-12-23 07:42:32
【问题描述】:

我无法在 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 issuethis pull request 来解决问题。但似乎问题仍然存在。还是我做错了什么?

【问题讨论】:

    标签: express routeparams


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,成功了!它适用于 app.userouter.use
    【解决方案2】:

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

    【讨论】:

    • 我认为这是目前最合适的解决方案。不过如果app.use支持路由参数,或者router.use支持路由器作为中间件就好了……
    猜你喜欢
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    相关资源
    最近更新 更多