如何正确使用Express 4多个路由器
我试图使用Express 4路由器根据path使用不同的路由器。 我想要版本2处理的所有/api/v2/
路由,以及版本1处理的其他所有路由。 下面的设置正确地为我提供了所有的version1
路由,但似乎忽略了version2
因为每次我testing这些端点时都会收到“无法获取…”消息。
routes.js:
var version1 = require('./routes/vers1'); var version2 = require('./routes/vers2'); module.exports = function(app) { app.all('/api/v2/*', version2); app.all('/*', version1); };
方法路由( .get
, .post
,当然.all
)是terminal。 这就是为什么你可以使用通配符。 .use
不是terminal,不允许使用通配符 – 它充当前缀。 这是express的实现select。 使用.use
没有通配符。
-
.use
不设置图层路线 - 所有其他方法设置图层路线
- 如果路由设置,图层尝试处理请求 。 否则,该图层的path将从请求path中剥离(您在
.use
设置的/api/v2
将被删除)。
app.use("/*", version1)
作品纯属偶然。 这将匹配任何路线,并通过version1[method](path)
。 由于没有前缀去除,如果请求路由匹配path
,express将考虑这个匹配并服务那个路由。
使用.use
。