javascript - Node.js 中的 URL 解析

标签 javascript node.js

我正在使用 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/

相关文章:

javascript - 尝试在前置元素:上添加点击事件

javascript - 是否有可能在 jquery 中有整数数组

javascript - jquery中的特殊字符

javascript - 如何在 `filter` 内使用可观察值?

javascript - 为什么我们不能将数据作为 javascript 对象而不是 JSON 对象发送?

javascript - 将函数数组传递给异步并行

javascript - Chrome 扩展程序中的 Google Analytics(分析)无法正常工作

javascript - 成功后执行 2 个异步函数

node.js - Web 浏览器如何对一个简单的 URL 发出多个请求?

node.js - AWS - Cognito Identity 与 Node.js - 如何处理 token