簡體   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