[英]Express + Node Route With Multiple Parameters in Query String
我正在 Node 中構建 API,並且正在努力想辦法解決問題。 也就是說,我知道如何構建/api/:paramA/:paramB
類型的路由。 在這種情況下,有兩個參數。
代碼將是這樣的:
router.get('/test/:paramA/:paramB', function(req, res) {
res.json({ message: 'hooray! welcome to our api!' + req.params.paramA + req.params.paramB});
});
如何構建一條響應/api?paramA=valueA¶mB=valueB
?
要在 Express 的路由中使用此 URL:
/api?paramA=valueA¶mB=valueB
你做這個:
router.get('/api', function(req, res) {
console.log(req.query.paramA); // valueA
console.log(req.query.paramB); // valueB
console.log(req.query.paramC); // undefined (doesn't exist)
});
查詢參數被解析為req.query
對象。 如果查詢字符串中不存在查詢參數名稱,則 query.query 對象上將不存在該屬性,並且嘗試讀取它會返回undefined
。 請記住,所有值都將是字符串。 如果您希望它們是數字或其他一些數據類型,那么您必須將它們解析為其他類型。
我最終使用了這個。 這段代碼完全符合我在原始問題中的意圖。
router.get('/api', function(req, res) {
if(typeof req.query.paramA !== 'undefined' && typeof req.query.paramB !== 'undefined') {
let paramA = req.query.paramA,
paramB = req.query.paramB;
//do something with paramA and paramB
}
});
在 router 中定義 url 參數更容易。
示例網址: http : //www.example.com/api/users/3&0
router.get('/api/users/:id&:pending', function (req, res) {
console.log(req.params.id);
console.log(req.params.pending);
});
如果您確定正在傳遞的 GET 參數,那么您可以輕松地這樣做:
router.get('/api', function(req, res) {
if(typeof req.params.paramA !== 'undefined' && typeof req.params.paramB !== 'undefined') {
let paramA = req.params.paramA,
paramB = req.params.paramB;
//do something with paramA and paramB
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.