我正在尝试使用Express 4路由器根据路径使用不同的路由器。我希望/api/v2/
处理所有version2
个路由,version1
处理所有其他路由。以下设置正确地为我提供了所有version1
路由,但似乎忽略了version2
,因为每次测试这些端点时都会收到“无法获取...”消息。
routes.js:
var version1 = require('./routes/vers1');
var version2 = require('./routes/vers2');
module.exports = function(app) {
app.all('/api/v2/*', version2);
app.all('/*', version1);
};
答案 0 :(得分:2)
答案 1 :(得分:2)
方法路线(.get
,.post
,当然还有.all
)是终端。这就是为什么你也可以使用通配符。 .use
不是终端,并且不允许使用通配符 - 它充当前缀。这是express的实现选择。使用不带通配符的.use
。
.use
does not set the layer route /api/v2
中设置的.use
将被剥离)。 app.use("/*", version1)
的工作原理纯粹是偶然的。这将匹配任何路线并落到version1[method](path)
。由于没有要删除的前缀,如果请求路由与path
匹配,则express会将此视为匹配并为该路由提供服务。
使用.use
。