2016-01-07 376 views
2

我已經設置了一個快速應用並使用路由中間件將一些路由抽象爲單獨的包含。在Express路由器路由中確定路徑

我在app.js使用這種風格引用它們:

app.use('/foo', my_urls); 

這意味着在瀏覽器中「/富/酒吧」,如果是「/酒吧」進行處理。

但問題是,在包含的路由器文件的router.get("/bar"...)部分,我需要知道前面(foo)部分的值。我已經設置了這個「foo」可以是任何值的數組的任何路線。

有什麼方法可以知道路由中間件的上下文,路由的前一部分路徑在哪​​裏作用?換句話說,我可以做一些像(在這裏假裝代碼):

router.get('/bar', function(req, res, next) { 
    res.send(req.path[0]) // foo 
}); 

解決:謝謝你的答案。

router.get('/bar', function(req, res, next) { 
    res.send(req.baseUrl.splice(1)) // foo 
}); 
+0

express有'req.path'屬性,所以你可以知道路徑http://expressjs.com/en/api.html#req.path – Bek

+0

謝謝@Bek我正在尋找的部分是「baseUrl」作爲「路徑」只會顯示第一個路徑後面的部分路徑。乾杯。 –

回答

5

快遞已經req.path屬性,這樣你就可以知道該路徑,但顯示父路由器的路徑之後的路徑(如果有的話),所以要得到母路由器路徑可以使用req.baseUrl:我可以用這個獲得的價值和req.originalUrl用queryparam獲得完整的網址。

+0

完美:req.baseUrl正是我所需要的。謝謝! –