对于字符串"http://localhost:9090/calculator?oper=add&n1=10&n2=20",
console.log(url.parse(req.url).query);
// gives `oper=add&n1=10&n2=20`
,而
console.log(querystring.parse(req.url));
// gives { '/calculator?oper': 'add', n1: '10', n2: '20' }`
但是,我无法分割它,因为它们是对象,而不是字符串。如何将它们转换为字符串?
答案 0 :(得分:0)
只需使用object.toString()
将任何变量转换为字符串。大多数标量类型和数组都将被转换。其他对象可能需要实现该方法,否则它们只返回文本[Object]
或其他内容。
第二种情况看起来console.log()
使用了JSON.stringify(object)
,可能是因为该对象没有实现方法toString()
。
答案 1 :(得分:0)
正如您在所提供的内容中所看到的,querystring.parse(req.url)
将网址路径与零'值的键混合在一起。这意味着不应在完整网址上调用querystring.parse
,而只应在网址的查询部分调用querystring.parse
。您可以对url.parse
var parsedUrl = url.parse(testUrl); //would be url.parse(req.url)
var parsedQuery = querystring.parse(parsedUrl.query);
来执行此操作
parsedQuery.oper
现在,您可以执行parsedQuery.n1
,parsedQuery.n2
,oper
如果由于某种原因你想要迭代parsedQuery(例如,如果你不知道密钥是n1
,n2
,var parsedQueryKeys = Object.keys(parsedQuery);
parsedQueryKeys.forEach(function(key) {
console.log( key, parsedQuery[key] );
});
,...),你可以这样做:
console.log( req.param('oper'), req.param('n1'), req.param('n2') );
(迭代对象还有其他多种解决方案)
最后,一些库会自动为您解析,因此您可以直接询问查询值。
{{1}}