中找到最初匹配的路線。我需要在請求時恢復原始路線。無論是原始的:可變字符串還是正則表達式。基本上我希望有一些密鑰將所有請求分組到一個通用的高級預處理器中,並將這些請求分組到同一路由。如何在請求時在Express.Js
問題是我的路由與嵌套的應用和路由器相當複雜,所以app.routes.map不包含路由。
有沒有一種方法可以對來自請求對象的路由進行反向工程,或者是否有一個地方可以獲得我可以匹配和搜索當前請求的全局路由列表?
中找到最初匹配的路線。我需要在請求時恢復原始路線。無論是原始的:可變字符串還是正則表達式。基本上我希望有一些密鑰將所有請求分組到一個通用的高級預處理器中,並將這些請求分組到同一路由。如何在請求時在Express.Js
問題是我的路由與嵌套的應用和路由器相當複雜,所以app.routes.map不包含路由。
有沒有一種方法可以對來自請求對象的路由進行反向工程,或者是否有一個地方可以獲得我可以匹配和搜索當前請求的全局路由列表?
具體路線應在req.route
(docs)中提供。它包含幾個屬性,包括req.route.regexp
(路由的編譯正則表達式)和req.route.params
(匹配參數的數組)。
編輯:直到請求被分派之後纔會連接該路由。
聽起來好像你正在試圖預測它在發送之前的路線。在這種情況下,使用app.routes
可能正常工作。問題是你有自己的路由器的子應用程序。 app.routes
只包含頂級app
的路由,不包含任何子應用。
答案是:路線沒有全局視圖。您的子應用程序看起來完全像中間件到父應用程序。它不知道或不在意那裏有路由。
如果您需要執行此操作,則必須手動執行此操作,例如,在註冊您的子應用程序時創建一個全局數組。
從console.dir輸出(Object.keys(REQ))是: '[ '_readableState', '可讀', '域', '_events', '_maxListeners', '插座' , '連接', 'httpVersion', '完整的', '報頭', '拖車', '_pendings', '_pendingIndex', 'URL', '方法', '的StatusCode' , 'client', '_consuming', '_dumped', 'httpVersionMajor', 'httpVersionMinor', '升級', 'originalUrl', '_parsedUrl', '查詢', '資源', '下一步']' – Killroy