2013-01-02 29 views
6

'da başka bir yol için takma ad olarak bir rota kullanın Express.js'de temel bir blog üzerinde çalışıyorum. Böyle rota yapıya sahip ki:Express.js

/blog/page/:page 

isterim da esasen /blog/page/1 için bir takma ad olan bir /blog yolu gibi. Bunu Express'te nasıl kolayca halledebilirim?

Tüm yolları böyle gibi tanımlanmıştır:

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

cevap

13

kullanın res.redirect/blog/page/1 yeniden yönlendirmek için tarayıcı anlatmak için:

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

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

kullanın sayfa 1 paylaşılan bir rota işleyicisi ve varsayılan page param varsa şu şekilde değil:

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

Bu, değişikliklerin tarayıcının URL'si. Bunun yerine url'yi yeniden yazmak için connect-modrewrite kullanabilirsiniz. https://github.com/tinganho/connect-modrewrite?source=c – einstein

+1

Doğru @einstein ancak ekspres yollar kullanıldığında gerekli değildir. Bir diziyi eşleştirmek, hatta bir diziyi geçmek için kullanabilirsiniz, buraya bakın: http://stackoverflow.com/questions/15350025/express-js-single-routing-handler-for-multiple-routes-in-a-single- – TMPilot

+2

no'lu hat başka bir gidiş geliş gerektirdiğinden aşağı düştü. İyi bir çözüm değil. –

İlgili konular