有一个功能bodyparser.urlencoded(options)在body-parser,它有一个叫做扩展选项.
扩展选项允许选择使用查询字符串库(假设时)或qs库(当为真时)解析URL编码数据."扩展"语法允许将富对象和数组编码为URL编码格式,从而允许使用URL编码的类似JSON的体验.有关更多信息,请参阅qs库.
我有阅读qs和querystring文件,但我找不到任何明显的区别,所以我在这里寻求帮助.
EMX*_*EMX 16
查询字符串模块提供用于解析和格式化URL查询字符串的实用程序.
它是NodeJS API的一部分,介绍于v0.1.25.
我们可以观察它有4个主要功能: escape, parse, stringify, unescape
(除了函数之外的所有函数parse都是相同的v0.1.25.)
〜历史
querystring.parse:
Version Changes
v8.0.0 Multiple empty entries are now parsed correctly (e.g. &=&=).
v6.0.0 The returned object no longer inherits from Object.prototype.
v4.2.4 The eq parameter may now have a length of more than 1.
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它是一个简单的解决方案,其主要目的.
qs模块:查询字符串解析和字符串化库,增加了一些安全性.
qs (GitHub库.)(在撰写本文时)
bug)让我们一睹这个qs.parse功能:
qs允许您通过用方括号[]包围子键的名称在查询字符串中创建嵌套对象.例如,字符串'foo [bar] = baz'转换为:
Run Code Online (Sandbox Code Playgroud)assert.deepEqual(qs.parse('foo[bar]=baz'), { foo: { bar: 'baz' } });
与Query String相比,它能够解析嵌套对象......
默认情况下,嵌套对象时,qs最多只能解析5个子项.这意味着如果你试图解析像'a [b] [c] [d] [e] [f] [g] [h] [i] = j'这样的字符串,你的结果对象将是:
Run Code Online (Sandbox Code Playgroud)var expected = { a: { b: { c: { d: { e: { f: { '[g][h][i]': 'j' } } } } } } };
深度可以被覆盖:
var deep = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 8 });
Run Code Online (Sandbox Code Playgroud)
...与Query String相比,这只是该软件包提供的众多功能之一
我想说qs是一种先进的解决方案.
我有阅读
qs和querystring文件,但我找不到任何明显的区别,所以我在这里寻求帮助.
它们在目的上没有区别.
querystring 有一些限制,但最后,这取决于你的需求......
| 归档时间: |
|
| 查看次数: |
15164 次 |
| 最近记录: |