Regex 如何在Express.Js中找到请求时最初匹配的路由

Regex 如何在Express.Js中找到请求时最初匹配的路由,regex,node.js,express,routing,Regex,Node.js,Express,Routing,我需要在请求时恢复原始路由。可以是带有:变量字符串的原始字符串,也可以是正则表达式。基本上,我希望有一个键,它可以在一个通用的高级预处理器中对所有到达相同路径的请求进行分组 问题是,我的路由与嵌套的应用程序和路由器相当复杂,因此app.routes.map不包含路由 是否有一种方法可以从请求对象对路由进行反向工程,或者是否有一个地方可以让我获得一个全局路由列表,我可以根据当前请求进行匹配和搜索?特定路由应该在req.route()中可用。它包含多个属性,包括req.route.regexp(路由

我需要在请求时恢复原始路由。可以是带有:变量字符串的原始字符串,也可以是正则表达式。基本上,我希望有一个键,它可以在一个通用的高级预处理器中对所有到达相同路径的请求进行分组

问题是,我的路由与嵌套的应用程序和路由器相当复杂,因此app.routes.map不包含路由


是否有一种方法可以从请求对象对路由进行反向工程,或者是否有一个地方可以让我获得一个全局路由列表,我可以根据当前请求进行匹配和搜索?

特定路由应该在
req.route
()中可用。它包含多个属性,包括
req.route.regexp
(路由的编译正则表达式)和
req.route.params
(匹配参数数组)

编辑:在发送请求之前,不会附加路由

听起来你在试图在发送前预测路线。在这种情况下,使用
app.routes
可能正常工作。问题是,你有自己的路由器子应用程序<代码>应用程序路由仅包含顶级
应用程序
的路由,不包含任何子应用程序的路由

答案是:没有路线的全局视图。您的子应用程序看起来与父应用程序的中间件完全相同。它不知道也不关心下面是否有路由


如果需要执行此操作,则必须手动执行,例如,创建一个全局数组,在其中注册子应用。

req.route未定义。我正在app.use处理程序中执行此操作,但此应用程序不直接包含路由。它们使用新的express.Router()和app.use(…,Router.middleware)从不同的路由器加载@Killroy,如果你想在发送前弄清楚路线,那就没有办法自动完成。您必须手动跟踪它们。见更新的答案。这是我最后的工作。我想知道是否有一种方法可以在URL上运行路由过程,然后再进行一些操作。console.dir(Object.keys(req))的输出是:
[''u readableState'、'readable'、'domain'、'u events'、'u maxListeners'、'socket'、'connection'、'httpVersion'、'complete'、'Header'、'Trailes'、'uPendingIndex'、'url'、'method'、'statusCode'、'client'、'u consuming'、'u dumped'、'httpVersionMajor'、'httpVersionMinor'、'upgrade'、'originalUrl',“\u parsedUrl”、“query”、“res”、“next”]