app.get('/api/:person', (req, res) => {
/*This will create an object that you can iterate over.*/
for (let foo of req.params.foo) {
/*Do some logic here*/
}
});
export function extractArrQueryParams(
req: express.Request,
paramName: string
) {
let param = req.query[paramName];
let returnArray = [];
if (Array.isArray(param)) {
for (let e of param) {
returnArray.push(e);
}
} else {
if (param) {
returnArray.push(param);
}
}
return returnArray;
}
9条答案
按热度按时间amrnrhlw1#
一种选择是使用JSON格式。
服务器端
或您自己的格式
型
服务器端
58wvjzkj2#
当查询参数在请求URL中重复多次时,Express会将其公开为数组:
这同样适用于其他方法中的req.body。
xesrikrc3#
您可以用percent encoding编码数组,只需要“覆盖”一个字段,正式地连接这些值。
此查询将打印
['a','b','c']
。8wigbo564#
使用下一个代码:
在后端,有两种标准方法。对于下一个请求:
1./?foo= 1和foo =2
1./?foo[]= 1和foo []=2
您的NodeJS后端将接收下一个查询对象:
1.{ foo:[“1”,“2”] }“对象”为真
1.{ foo:[“1”,“2”] }“对象”为真
所以,你可以选择你想要的方式。我的建议是第二个,为什么?如果你需要一个数组,并且你只传递一个值,那么选项一会把它解释为一个常规值(字符串),而不是数组。
[我说过我们有两个标准,但这是不对的,URL中的数组没有标准,这是两种常见的方式。每个Web服务器都有自己的方式,如Apache、JBoss、Nginx等]
kx5bkwkv5#
如果你想从url参数传递一个数组,你需要按照下面的例子:
URL示例:
要从Express中检索它:
hts6caw36#
Express有一个工具可以检查您的路径是否与您正在创建的路线匹配:Express.js route tester .
正如Jose Mato所说,您必须决定如何构建您的URL:
1.?foo= 1和foo =2
1.?foo[]= 1和foo []=2
如果您选择方法1,http请求应该如下所示:
http://baseurl/api/?foo=1&foo=2
您的路径应具有以下逻辑:
6pp0gazn7#
您可以传递由斜杠分隔的数组元素- GET /API/person/foo/bar/...
将路径定义为
'/api/person/(:arr)*'
req.params.arr
将有第一个参数。req.params[0]
将有其余的字符串。你用这两个拆分并创建一个数组。...
fquxozlt8#
这里使用这个,'%2C'是逗号的HTML编码字符。
访问查询参数
ubby3x7f9#
当数组参数只包含一个值时就会出现问题,因为它的行为就像一个简单的字符串,或者当它不包含任何值时。
例如:
下面是一个函数,它总是将具有给定名称的参数提取为一个数组: