什么是定义路由层次结构的最佳方式,以便我有一个基本 URL /page/:id
,然后是类似 /page/:id/delete
的网址和 /page/:id/edit
,而不必在所有路径中重复/page/:id 位?
我试过以下方法,但是 id
参数在子路由中不可用:
pageActions = express.Router!
pageActions.get "/delete", (request, response) ->
request.params.id #undefined
app.use "/page/:id", pageActions
我在路由指南中看不到任何关于此行为的提及,但在这里提供所有参数似乎很有用,特别是因为允许在路由的“安装路径”中使用参数。
最佳答案
我相信您可能对两件事感到困惑。
首先,您不应该使用 get
删除函数的方法。相反,您应该使用 delete
方法。这是映射到请求中发送的内容的两个 HTTP 快捷方法。 This显示了 ExpressJS 支持的快捷方式的完整列表,这些都可以被路由器使用。
其次,如果您使用的是 ExpressJS Router并且您想保留安装路由器的路径中的参数,您需要让 ExpressJS 知道使用 mergeParams
选项:
var router = express.Router({mergeParams: true});
关于node.js - Express 中的嵌套路由,其中父路由包含参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32140273/