2013-01-02 53 views
6

我正在使用Express.js中的基本博客。說我有航線結構是這樣的:使用路線作爲Express.js中另一條路線的別名

/blog/page/:page 

我也想了/blog路由實質上是/blog/page/1的別名。我如何在Express中輕鬆處理?

所有路由都定義如下這樣:

app.get('/path', function(req, res) { 
    //logic 
}); 

回答

13

使用res.redirect告訴瀏覽器重定向到/blog/page/1

app.get('/blog', function(req, res) { 
    res.redirect('/blog/page/1'); 
}); 

app.get('/blog/page/:page', function(req, res) { 
    //logic 
}); 

使用,如果page PARAM共享路由處理和默認頁1未通過:

function blogPageHandler(req, res) { 
    var page = req.params.page || 1; 
    //logic 
} 

// Define separate routes 
app.get('/blog/page/:page', blogPageHandler); 
app.get('/', blogPage); 

// or combined, by passing an array 
app.get(['/', '/blog/page/:page'], blogPageHandler); 

// or using optional regex matching (this is not recommended) 
app.get('/:_(blog/)?:_(page/)?:page([0-9]+)?', blogPageHandler); 
+7

這將導致瀏覽器的網址。你可以使用connect-modrewrite來改寫url。 https://github.com/tinganho/connect-modrewrite?source=c – einstein

+1

正確@einstein然而,使用快速路線時沒有必要。你可以使用正則表達式來匹配,甚至傳遞一個數組,請看這裏:http://stackoverflow.com/questions/15350025/express-js-single-routing-handler-for-multiple-routes-in-a-single-行 – TMPilot

+2

downvoted因爲這需要另一次往返。不是一個好的解決方案 –