express 中的嵌套路由,其中父路由包含参数

问题描述 投票:0回答:2

定义路由层次结构的最佳方法是什么,以便我拥有

/page/:id
的基本 URL,然后是
/page/:id/delete
/page/:id/edit
等 url,而不必在所有路径中重复 /page/:id 位?

我尝试了以下方法,但

id
参数在子路线中不可用:

pageActions = express.Router!

pageActions.get "/delete", (request, response) ->
    request.params.id #undefined

app.use "/page/:id", pageActions

我在路由指南中看不到任何提及此行为的信息,但似乎在此处提供所有可用参数会很有用,特别是因为允许在路由的“挂载路径”中包含参数。

node.js express url-routing
2个回答
51
投票

有两件事我相信您可能会感到困惑。

首先,您不应该使用

get
方法来删除函数。相反,您应该使用
delete
方法。这是映射到请求中发送的内容的两个 HTTP 快捷方法。 显示了 ExpressJS 支持的快捷方式的完整列表,这些都可以被路由器使用。

其次,如果您使用的是 ExpressJS Router 并且您想保留安装路由器的路径中的参数,您需要使用

mergeParams
选项让 ExpressJS 知道:

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

-7
投票

使用 Router 的 mergeParams 选项从父级继承路由参数:http://expressjs.com/4x/api.html#router

© www.soinside.com 2019 - 2024. All rights reserved.