在ExpressJS中,如何使用正则表达式在一个路由中写入以下内容?
app.get('/blog', blog.list);
app.get('/blog/p/:page?', blog.list);
app.get('/blog', blog.list);
app.get('/blog/p/:page?', blog.list);
app.get('/blog(?:/p/:page([0-9]+)?)?', blog.list);
该路由将匹配以下所有URL:
/blog
/blog/
/blog/p
/blog/p/
/blog/p/123
在 blog.list
控制器中,req.params.page
将包含页面编号,如果未提供,则为 undefined
。
看起来分别设置这些路由可能有令人信服的理由,但我不确定你在应用程序中要做什么。
app.get(/^\/blog(?:\/p\/([0-9]+)?)?/, blog.list);
在路由 /blog/p/20 中,req.params[0] 应该为 "20",而对于 /blog/p/ 或 /blog/,req.params 为 null
,但两者都是功能路由。