如何将request.url转换为String

时间:2014-08-23 01:41:41

标签: javascript string node.js url query-string

对于字符串"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' }`

但是,我无法分割它,因为它们是对象,而不是字符串。如何将它们转换为字符串?

2 个答案:

答案 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.n1parsedQuery.n2oper

Example


如果由于某种原因你想要迭代parsedQuery(例如,如果你不知道密钥是n1n2var parsedQueryKeys = Object.keys(parsedQuery); parsedQueryKeys.forEach(function(key) { console.log( key, parsedQuery[key] ); }); ,...),你可以这样做:

console.log( req.param('oper'), req.param('n1'), req.param('n2') );

(迭代对象还有其他多种解决方案)


最后,一些库会自动为您解析,因此您可以直接询问查询值。

例如,使用expressreq.param

{{1}}

Find express on npm