在 Express.js 中使用一个路由作为另一个路由的别名

问题描述 投票:0回答:2

我正在使用 Express.js 开发一个基本博客。假设我有这样的路线结构:

/blog/page/:page

我还想要一个

/blog
路线,它本质上是
/blog/page/1
的别名。我怎样才能在 Express 中轻松处理这个问题?

所有路线的定义如下:

app.get('/path', function(req, res) {
    //logic
});
node.js routes express alias
2个回答
30
投票

使用

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
参数,则默认为第 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);

0
投票

以防万一人们仍然偶然发现这个古老的帖子。如果您只想要一个别名,您现在可以这样做:

app.get(['/your-route', '/alias1', '/alias2', '/...'], (req, res) => {
   // ...
})
© www.soinside.com 2019 - 2024. All rights reserved.