在Express.js中使用路由作为别的路由的别名
我正在使用Express.js编写一个基本的博客。 说我有这样的路线结构:
/blog/page/:page
我还想要一个/blog
路线,本质上是/blog/page/1
的别名。 如何在Express中轻松处理?
所有路线都是这样定义的:
app.get('/path', function(req, res) { //logic });
使用res.redirect
告诉浏览器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);