繁体   English   中英

Express路由器无法正常使用子目录

[英]Express router not working as expected with subdirectory

我将我的api查询按Node.js应用程序内的模块划分。 因此在index.js我有:

app.use('/api/schedule/', apiSchedule);

然后,在apiSchedule路由器内部:

router.get('/:id', function (req, res) {
    res.send('Queried ID');
});
router.get('/', function (req, res) {
    res.send('Queried root');
});
router.get('/list', function (req, res) {
    res.send('Queried list');
});
router.get('/list/:id', function (req, res) {
    res.send('Queried list item');
});

我正在用邮递员测试这些路线,结果如下:

http://localhost/api/schedule/ <-- Queried root
http://localhost/api/schedule/1 <-- Queried ID
http://localhost/api/schedule/list  <-- empty
http://localhost/api/schedule/list/ <-- empty
http://localhost/api/schedule/list/1 <-- Queried list item

为什么查询列表给出空响应? 我的配置出了点问题,或者路由器无法正常运行?

注意, 没有错误响应,但是有空白响应 另外,不会调用路由器功能内的console.log

可能是因为路由路径/:id具有参数ID,所以此路由的regex也可以接受路由//list

检查的价值req.params/:id路线,你会看到,在情况/ ID参数将是undefined/list情况下,将list

要修复它,您需要为/:id指定正则表达式,如果ID是数字类型,则它将类似于/:id(\\d+)

我对UUID4类型(字符串)的ID参数有相同的问题,因此我设法使用此正则表达式([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM