在node.js中parsingURL

我正在开发restAPI使用Node.js。 以下是我的API的URL:

http://xxxxxxxx:3000/map70/places?node[level0=12&level1=34&level2=234][ids=1,2,3,4][key=xxxxxxxxxx][val=2011] 

在这我必须得到每个参数level0,level1,level2,ids,key,value。

在正常的url格式,如下所示:

 http://xxxxxxxx:3000/map70/places?key=xxxxxxx&val=2011&level0=2&level1=33&level2=602 

我可以parsing像req.query.level0..但是对于上面的url我怎么能parsing它。我搜查了很多,但我找不到正确的解决scheme。帮我解决这个问题..预先感谢….

有这种查询参数的风格的名称? 我从来没听说过。 如果围绕它有一些标准,你可能会find一些模糊的模块来parsing它。 否则,很可能你必须自己parsingstring。

你可以通过Node的url模块获得这个东西:

 var url = require('url'); var parsed = url.parse('http://xxxxxxxx:3000/map70/places?node[level0=12&level1=34&level2=234][ids=1,2,3,4][key=xxxxxxxxxx][val=2011]'); var query = parsed.query; 

此时, query现在包含node[level0=12&level1=34&level2=234][ids=1,2,3,4][key=xxxxxxxxxx][val=2011] ,您可以开始使用string操作。

[更新]

我只是closures你发布的URL,所以你可能需要编写一些testing用例来确保你关心的所有参数都被parsing,但是我能够得到如下所示的结果:

 var querystring = require('querystring'); var q2 = query.slice(5, -1); // q2 == "level0=12&level1=34&level2=234][ids=1,2,3,4][key=xxxxxxxxxx][val=2011" var q3 = q2.replace(/\]\[/g, '&'); // q3 == "level0=12&level1=34&level2=234&ids=1,2,3,4&key=xxxxxxxxxx&val=2011" querystring.parse(q3); // returns: // { level0: '12', // level1: '34', // level2: '234', // ids: '1,2,3,4', // key: 'xxxxxxxxxx', // val: '2011' } 

你可以把它们结合到一起:

 querystring.parse(query.slice(5, -1).replace(/\]\[/g, '&'));