【问题标题】:Nested routes in express, where a parent route includes a paramexpress 中的嵌套路由,其中​​父路由包含一个参数
【发布时间】:2015-08-21 12:23:40
【问题描述】:

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


    【解决方案1】:

    我相信你可能会对两件事感到困惑。

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

    其次,如果您使用的是ExpressJS Router,并且您想保留安装路由器的路径中的参数,您需要使用mergeParams 选项让 ExpressJS 知道这一点:

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

    【讨论】:

    • 谢谢,刚刚找到 mergeParams。我知道 DELETE,只是不想在这种情况下使用表单或 XHR。
    【解决方案2】:

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

    【讨论】:

    • 你为什么用另一个答案的回答来回答你自己的问题?
    • 哈哈这个网站太挑剔了。我在看到另一个答案之前写了这个。你去吧,奥卡姆的剃刀等等。
    • 我很高兴您找到了答案,无论您如何找到答案。这就是该网站的重点,但该网站之所以有效,是因为人们愿意提供时间来帮助他人,除了获得一点点信用以承认他们的努力和帮助之外,没有任何实际好处。我不会说那是“挑剔”。
    猜你喜欢
    • 1970-01-01
    • 2019-10-22
    • 2022-07-24
    • 2019-01-03
    • 2022-01-11
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多