2

In ExpressJS, how to right the following in one route using RegEx?

app.get('/blog', blog.list);
app.get('/blog/p/:page?', blog.list);
4

2 回答 2

6

在这里使用 RegExp 有什么意义?表达模式更简单,但几乎和正则表达式一样强大:

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如果未提供页码。

于 2013-07-23T11:17:15.267 回答
0

似乎有令人信服的理由来制作这些单独的路线,但我不确定你在用你的应用程序做什么。

app.get(/^\/blog(?:\/p\/([0-9]+)?)?/, blog.list);

req.params[0] 在路由 /blog/p/20 处应为“20”,req.params 与null/blog/p/ 或 /blog/ 相同,但两者都作为功能路由。

于 2013-07-23T12:05:06.133 回答