首页 > 解决方案 > 在与路由数组一起使用的 Express 路由器中指定特定路由

问题描述

Express 文档清楚地表明您可以app.use为特定中间件提供一系列路由。

他们还在此处描述了如何将路由器拆分为单独的文件。

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

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');
  });

标签: javascriptnode.jsexpress

解决方案


看起来你正在尝试做这样的事情

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/loginauth 文件将永远不会被调用,/api/login否则/api/register它们将通过第一个数组路由。如果将第一条路由放在底部,则永远不会调用响应这两条路由的数组路由,因为它要么转到第一个 /register 路由,要么转到第二个 /login 路由。


推荐阅读