如何处理一条不同于所有其他路线的快速路线

How to handle one express route different than all other

我目前正在 NodeJS 应用程序中使用 Express 路由器。我只是一直在使用 app.use(app.router); 进行路由,而且效果很好。 但是,我现在正在测试一些新路线并希望以不同的方式处理它们。

理想情况下,我希望能够说:

var vers2Router = require('./routes/version2');

app.use('/version2', vers2Router);
app.use(app.router);

我可以这样做以便使用 vers2Router 处理所有 /version2 路由,而仅使用 app.router 处理其余路由吗?

从 Express 版本 4.x 开始,app.router 已被删除。路由现在按照添加的顺序执行。

现在您可以使用 express.Router,因为它将允许您拥有独立的路由实例,并且在您的示例中,您可以创建许多具有自己版本化路由的路由器。

像这样:

// app.js
'use strict';

var express = require('express');
var app = express();

var userRouterV1 = require('./routes/v1/userRouter.js');
var userRouterV2 = require('./routes/v2/userRouter.js');

app.use('/v1/api/users', userRouterV1);
app.use('/v2/api/users', userRouterV2);

app.listen(4000, function () {
  console.log('server up an running');
});

和您的隔离路由版本 1:

// /routes/v1/userRouter.js
'use strict';

var express = require('express');
var router = express.Router();

router.get('/', function (req, res) {
  res.send('Hello v1');
});

module.exports = router;

最后是你的隔离路由版本 2 :

// /routes/v2/userRouter.js
'use strict';

var express = require('express');
var router = express.Router();

router.get('/', function (req, res) {
  res.send('Hey v2');
});

module.exports = router;