23

在当前版本的body-parser中,现在需要使用时的extended选项。bodyParser.urlencoded()在自述文件中,它解释了:

扩展选项允许在使用 querystring 库(如果为 false)或 qs 库(如果为 true)解析 URL 编码数据之间进行选择。

[...]

默认为 true,但不推荐使用默认值。请研究 qs 和 querystring 之间的区别并选择适当的设置。

我找不到任何有用或具体的信息。我只发现了一个已弃用的node-querystring

这个选项应该总是正确的吗?

4

1 回答 1

47

此消息的原因body-parser即将更改extendedfrom的默认值truetofalse

扩展协议使用qs来解析x-www-form-urlencoded数据。的主要优点qs是它使用了非常强大的序列化/反序列化算法,能够序列化任何类似 json 的数据结构。

但是网络浏览器通常不使用此协议,因为x-www-form-urlencoded它旨在序列化平面 html 表单。不过,如果您要使用ajax.

querystringlibrary`提供基本的序列化/反序列化算法,所有网络浏览器都使用该算法序列化表单数据。这种基本算法比扩展算法简单得多,但仅限于平面数据结构。

两种算法对平面数据的工作方式完全相同。

现在,当您了解这两种算法的优缺点后,您可以决定哪一种更适合您的应用程序。

于 2015-03-21T00:13:08.060 回答