1
我做了一個API,我已經如下路由的:快遞JS GET參數
在主要航線文件:
//with sub-route
app.use('/api/test/:test', require('./api/test'));
//Without sub-route
app.use('/api/test2/:test', function(req, res){
console.log('in test', req.params, req.body);
return res.status(200).json({params: req.params, body: req.body});
});
訪問第二個路由將按照預期顯示:req.params中的測試。
在模塊化路由文件夾( './api/test')我有一子路由器(index.js),它看起來是這樣的:
router.get('/:test2', controller.getItem);
與控制器:
exports.getItem = function getItem(req, res) {
console.log('in getItem \nreq.params', req.params, '\nreq.body: ', req.body);
return res.status(200).json({yes: 'yes', params: req.params, body: req.body});
};
所以第一個網址,它沒有子路由是:/api/test2 /:測試並註銷掉你放置的任何東西:test在req.params中。
的第二網址,其子路由:/API /測試/:測試/:TEST2,但是當你把你的GET請求只:TEST2出現在req.params。
看來,如果你使用這種模式,路由的「根」(即主路由器)中的任何變量都不會被拾取。
有沒有辦法解決這個問題?
感謝
我建議你做'req._params = req._params || []'然後'req._params.push(req.params)'。這種方式適用於多級安裝。 – Plato
謝謝。 :)我聽說他們將在未來的版本中解決這個問題;我真的希望如此... – user1775718
@Plato:但是你有一個對象數組,你不能再訪問'req._params.test'。我更新了我的答案,以反映多個安裝級別。 – Amberlamps