在Express路由器中指定与路由阵列一起使用的特定路由

时间:2018-06-22 12:20:34

标签: javascript node.js express

Express docs很清楚,您可以为app.use提供特定中间件的一系列路由。

它们还描述了如何将路由器分成单独的文件here

但是我看不到如何结合这两种方法。

index.js

const authRoutes = require('./routes/auth');
app.use(['/api/register', '/api/login'], authRoutes);

./ routes / auth

router.route('/')
  .all((req, res) => res.send('responds to both routes'); // <- this works

router.route('/register') // <- But how can I specify a specific route?
  .all((req, res) => {
    res.send('The register route');
  });

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试做这样的事情

const authRoutes = require('./routes/auth');
app.use('/api', authRoutes);


router.route(['/register', '/login']) .   // respond to both
  .all((req, res) => res.send('responds to both routes'); 

router.route('/register') // this is /api/register
  .all((req, res) => {
    res.send('The register route');
  });

router.route('/login') // this is /api/login
  .all((req, res) => {
    res.send('The login route');
  });

但是此逻辑有问题,因为通过/register/login时,将永远不会调用auth文件中的单个路由/api/login/api/register,它们会通过第一条阵列路线。如果将第一个路由放到底部,则永远不会调用对这两个路由进行响应的数组路由,因为它会转到第一个/ register路由或第二个/ login路由。