【发布时间】:2016-10-29 06:28:54
【问题描述】:
我正在尝试配置 expressJS 路由。
app.route(base + '/inventory/adjustments').get(policy.isAllowed, inventoryChangeCtrl.search);
app.route(base + '/inventory/:inventoryId(?!^adjustments$)').get(policy.isAllowed, inventoryCtrl.findById)
考虑输入../inventory/adjustments
问题在于,在第一条路由中,它匹配正确,但控制器调用了 next(),它应该落入我在其他地方设置的 default route handler。但相反,下一个路由处理程序也匹配。
所以现在我尝试使用正则表达式从该路由处理程序中排除更具体的字符串,但现在它与 .../inventory/9039309309 这样的正确输入不匹配。
谁能建议如何从第二条路线中排除第一条路线? (并且仍然允许为默认处理程序调用 next)。
谢谢。
【问题讨论】:
-
你是说到达 /inventory/adjustments 也匹配到 /inventory/:inventory_id
-
使用重定向而不是调用 next。
-
是的@Dave Briand,第二条路由也匹配第一个请求,因为我调用了 next()。如果第一个控制器返回一个响应,它当然不会被调用,但是有一个默认的中间件,我的所有响应都应该通过。