定义路由层次结构的最佳方法是什么,以便我拥有
/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
我在路由指南中看不到任何提及此行为的信息,但似乎在此处提供所有可用参数会很有用,特别是因为允许在路由的“挂载路径”中包含参数。
有两件事我相信您可能会感到困惑。
get
方法来删除函数。相反,您应该使用 delete
方法。这是映射到请求中发送的内容的两个 HTTP 快捷方法。 这显示了 ExpressJS 支持的快捷方式的完整列表,这些都可以被路由器使用。
其次,如果您使用的是 ExpressJS Router 并且您想保留安装路由器的路径中的参数,您需要使用
mergeParams
选项让 ExpressJS 知道:
var router = express.Router({mergeParams: true});
使用 Router 的 mergeParams 选项从父级继承路由参数:http://expressjs.com/4x/api.html#router