NodeJs应用程序上有多个可选路由和2个处理程序

时间:2018-02-09 16:53:31

标签: node.js express routing routes keystonejs

这是一个带有2个处理程序的渐进式路由。

app.get('/blog/:year/:quarter/:month?/:day?/:post', routes.views.post);
app.get('/blog/:year/:quarter/:month?/:day?/', routes.views.post_listing);

这里'月'和' day'是可选的。该路线应该回退到“后列表”中。处理程序当没有post param时。

非常感谢任何帮助。 提前致谢!

1 个答案:

答案 0 :(得分:1)

问题规范

如果您想使用示例中显示的路线,则必须使用正则表达式指定路线。保留它就像你的路线一样,会向你指定的两个路线处理程序确认/blog/1984/1/my-post/之类的路线。

您必须像以下示例一样指定它们:http://expressjs.com/en/guide/routing.html#route-paths

解决方案

在那里,您将year声明为4位参数,quarter为一位数,month为两位数,day为两位数,post作为与破折号的字母数字组合(这是常见的slug):

app.get('/blog/:year(\d{4})/:quarter(\d{1})/:month(\d{2})?/:day(\d{2})?/:post([a-z0-9-]+$)', routes.views.post);
app.get('/blog/:year(\d{4})/:quarter(\d{1})/:month(\d{2})?/:day(\d{2})?/', routes.views.post_listing);

帮助自己的进一步建议

还有一个很棒的工具可用于测试和玩弄快速路线:http://forbeslindesay.github.io/express-route-tester/