2016-03-01 57 views
2

在我和的NodeJS 「表達」 應用我有這樣的:如何在NodeJS的路由中使用「?param = X」?

app.get("/:page?", function (req, res) { 
    var pg = req.params.page; 

相當於localhost:123localhost:123/3

不過,我希望能夠通過req.params.page來得到當前頁面相同的方式網址應該是localhost:123localhost:123/?page=X

怎麼樣?

+0

@apsillers,沒有。 – Mario

+0

你想讓查詢字符串成爲路由的一部分;是對的嗎?我很肯定你不能那樣做,但這是一個很好的問題。這可能是你最接近的副本:[用節點JS中的Express預先路由查詢字符串](http://stackoverflow.com/questions/14909465/pre-routing-with-querystrings-with-express-in-node-js) – apsillers

+0

可能是一個更接近的重複:[如何使用Express解析查詢字符串中的變量?](http://stackoverflow.com/questions/14669669/how-to-parse-variables-in-querystring-using-express)(「查詢字符串在執行這些[路線]匹配時不考慮......「) – apsillers

回答

2

我的第一個建議填充的是,你不定義端點與/:variable。這將匹配您創建的任何遵循該模式的路線。您應該使用類似/pages/:page的內容來獲取特定頁面

然後,您應該使用Express中的URL參數功能來包含URL參數。

定義您的路線是這樣的:

app.get("/pages/:page", function (req, res) { 
    var pg = undefined; 

    if (req.query.page) { 
     pg = req.query.page; 
    } 
} 

然後,您可以訪問該頁面在req.query.page如果存在的話,做任何你想要的那個值。

因此,例如,您可以使用localhost/pages/123?page=3提交請求。

req.query.page將等於3和req.params.page將等於123

0

而應該定義你的路線,而不?,如果你做一個GET操作,例如在localhost:123/3?this=that那麼req.query.this將與價值that