如何正确使用Express 4多路由器

时间:2015-06-17 20:41:58

标签: javascript node.js express routes

我正在尝试使用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);

};

2 个答案:

答案 0 :(得分:2)

你想使用.use not .all

.all用于中间件,如身份验证

http://expressjs.com/api.html

答案 1 :(得分:2)

方法路线(.get.post,当然还有.all)是终端。这就是为什么你也可以使用通配符。 .use不是终端,并且不允许使用通配符 - 它充当前缀。这是express的实现选择。使用不带通配符的.use

app.use("/*", version1)的工作原理纯粹是偶然的。这将匹配任何路线并落到version1[method](path)。由于没有要删除的前缀,如果请求路由与path匹配,则express会将此视为匹配并为该路由提供服务。

使用.use