Express 如何在父路由中使用:通配符?

Express 如何在父路由中使用:通配符?,express,Express,我正在用Express4.0(rc3)构建一个express应用程序,因为我是从零开始开发的,已经有一段时间了,但是如果有一种方法可以在3.0中实现这一点,那也很受欢迎 我想要的是一组注释REST路由,可以附加到API中的其他路由。因此: /posts/:postd/comments/:commentID /profiles/:profileID/comments/:commentID 我当时的做法是将注释路由封装到一个模块中,包括模块中的buildRoutes(路由器)函数 然后我可以在我的主

我正在用Express4.0(rc3)构建一个express应用程序,因为我是从零开始开发的,已经有一段时间了,但是如果有一种方法可以在3.0中实现这一点,那也很受欢迎

我想要的是一组注释REST路由,可以附加到API中的其他路由。因此:

/posts/:postd/comments/:commentID /profiles/:profileID/comments/:commentID

我当时的做法是将注释路由封装到一个模块中,包括模块中的buildRoutes(路由器)函数

然后我可以在我的主服务器定义中使用('/api/comments',commentController.buildRoutes(express.Router()),然后在我的配置文件模块的
buildRoutes(Router)
中,我可以这样做

buildRoutes = function(profileRouter)
.... build the basic CRUD routes ...
profileRouter.get('/:profileID', show)
profileRouter.use('/:profileID', commentController.buildRoutes(express.Router()))

似乎只有.VERB方法实际替换:路由中的通配符,而不是.use方法。我可以使用一个自定义中间件,它在/api/profiles/*上运行,并将适当的URL参数映射到req.fields,但我想确保这确实是必需的。

因此,按照我最初的打算,这并不是特别容易做到的。然而,我只是通过重新构造buildRoutes方法以接受baseURL和router参数来避免整个问题。现在我说,
profileController.buildRoutes('/api/profiles/',router)
,而不是完全模块化它,它反过来调用
commentController.buildRoutes('/api/profiles/:profileID/comments',router)
,等等

这不是非常令人满意(我宁愿封装路径/路由信息并对控制器隐藏),但它可以工作