javascript - 在与路由数组一起使用的 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');
});
解决方案
看起来你正在尝试做这样的事情
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 路由。
推荐阅读
- camunda - 异步启动进程
- c# - ADAL AcquireTokenByRefreshTokenAsync 未更新 TokenCache
- javascript - 如何使用 url 参数中的上一页输入的输入值预填充 html 代码?
- java - iText - 在文档底部添加一个固定段落
- amazon-ecs - 尽管 ECS 代理已连接,但 AWS ECS(容器服务)不会启动容器
- excel - 如何使用 Excel VBA 向范围内的唯一用户发送电子邮件?
- json - 如何从网站获取 json 文件并将其放入 MS 访问数据库中
- jwt - JWT验证的公钥和私钥?
- r - 如何将 R 中的两个数据帧与嵌套循环进行比较
- python - 将y轴自动缩放到pyqtgraph中的可见数据