【发布时间】:2014-05-02 08:28:54
【问题描述】:
我有以下路线:
app.get('/blah/query.json', doSomething);
app.get('/blah/:id.:format', doSomethingElse);
目前两条路线都在继续,因此调用路线一 (query.json),然后调用路线二 (:id.:format)。如果调用路由一,我如何排除对路由二的调用。我试过这样的事情:
app.get('/blah^\/(?!query)(:id.:format)$', doSomethingElse);
但是这个,以及这个的几个变体,似乎都不起作用。我发现一个帖子引用了快递代码here。即使查看此代码并尝试不同的方法,我仍然无法让“If not query”表达式正常工作。
有什么想法吗?
【问题讨论】:
-
你在
doSomething里面打电话给next吗? -
是的,这两种方法都没有向请求者返回响应,而是他们做事并调用下一个
-
他们为什么不回复?看来您真的在与 Express 的预期用途作斗争。调用
next明确表示要执行下一个处理程序,这就是您要避免的。在我看来,真正应该在路由回调中调用next的唯一时间是传递一个错误。如果您发布有关您的路线的更多信息,很高兴尝试提出替代方案。 -
问题出在我正在创建的框架中。我已经简化了在堆栈上发布的问题。我了解常见用法,但是由于在路由中使用正则表达式将是一个理想的解决方案,因此很高兴知道您是否可以将正则表达式与快速请求参数结合使用。
标签: regex node.js express routes