[英]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.