我正在使用 Node.js 开发restAPI。其中以下是我的 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
我可以像req.query.level0..
一样解析。但是对于上面的url我该如何解析它。我搜索了很多,但我找不到正确的解决方案。帮我解决这..提前致谢....
最佳答案
这种类型的查询参数有名称吗?我从来没听说过。如果有一些围绕它的标准,您可能能够找到一些不起眼的模块来解析它。否则,您很可能必须自己解析该字符串。
您可以使用 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 ]
,然后您就可以开始使用字符串操作将其分解。
[更新]
我只是离开您发布的 URL,因此您可能需要编写一些测试用例以确保解析您关心的所有参数,但我能够得到如下内容:
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, '&'));
关于javascript - Node.js 中的 URL 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22139359/