我正在使用 Express.js 开发一个基本博客。假设我有这样的路线结构:
/blog/page/:page
我还想要一个
/blog
路线,它本质上是 /blog/page/1
的别名。我怎样才能在 Express 中轻松处理这个问题?
所有路线的定义如下:
app.get('/path', function(req, res) {
//logic
});
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);
以防万一人们仍然偶然发现这个古老的帖子。如果您只想要一个别名,您现在可以这样做:
app.get(['/your-route', '/alias1', '/alias2', '/...'], (req, res) => {
// ...
})