这是一个带有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时。
非常感谢任何帮助。 提前致谢!
答案 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/