node.js - Express 中的嵌套路由,其中​​父路由包含参数

标签 node.js express url-routing

什么是定义路由层次结构的最佳方式,以便我有一个基本 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/

相关文章:

node.js - 第二次无法建立 socket.io 客户端连接

c# - 如何在 Asp.Net 项目中制作特定于语言的 URL?

javascript - 在reactjs中登录后无法重定向

node.js - Express-Session 未在生产中持续存在

javascript - 在应用程序中的任何位置调用辅助函数 - Node/Express

javascript - Express.js 应用程序错误 : form filed values do not persist

Python Selector(URL 路由库),经验/意见?

php - 管理面板的 htaccess 重写规则

node.js - 使用 mocha 和 request 测试 mongodb 数据库

mysql - Node JS MySQL 查询依赖于另一个查询