复杂的URL查询string规范

我一直在使用Node.js的查询parsing器进行试验,并且能够将一些非常复杂的查询parsing为深度嵌套的对象和数组。 一些例子:

查询string:

1) '?$or=foo&$or=bar' 2) '?$or[foo]=bar' 3) '?$or[0][foo]=bar&or[1][bar]=baz' 4)'?$or[0][foo]=bar&or[1][bar][]=baz&or[1][bar][]=bing&or[1][bar][]=bang' 

节点将其parsing为:

 1) { $or: ['foo', 'bar'] } 2) { $or: { foo: 'bar' } } 3) { $or: [ { foo: 'bar' }, { bar: 'baz' } ] } 4) { $or: [ { foo: 'bar' }, { bar: ['baz', 'bing', 'bang'] } ] } 

这很酷,但我找不到任何有关为什么这个工程的文档。 我见过这个文件的几个链接,它有这样的说法:

IP地址版本6 [RFC3513]或更高版本所标识的主机通过在方括号(“[”和“]”)中包含IP字符来区分。 这是在URI语法中允许方括号字符唯一的地方。

听起来我至less不能安全地在Node外部使用这种语法,但为什么Node决定应该以这种方式工作,并且他们是否在任何地方logging这个语法?

经过一些挖掘,我在express.js 4.x文档中发现,express的查询parsing器是基于qsparsing器的 。 我正在运行Express 3.x,其文档似乎没有提到qs或任何高级parsingfunction,但所有的qs文档似乎仍然适用。