Skip to content

Query string ​

提供了用于解析和格式化 URL 查询字符串的实用程序。可以使用以下方式访问它:

js
const querystring = require('node:querystring');

querystring 比标准化 API 性能更高,但不是标准化 API。 在性能不重要或需要与浏览器代码兼容时使用。

querystring.decode() ​

该 querystring.decode() 函数是 querystring.parse() 别名

querystring.encode() ​

该 querystring.encode() 函数是 querystring.stringify() 别名

querystring.escape(str) ​

该 querystring.escape() 方法以针对 URL 查询字符串的特定要求进行优化的方式对给定 str 对象执行 URL 百分比编码

该 querystring.escape() 方法由使用 querystring.stringify() ,通常不期望直接使用。导出它主要是为了允许应用程序代码在必要时通过分配给 querystring.escape 替代函数来提供替换百分比编码实现

querystring.parse(str[, sep[, eq[, options]]]) ​

  • str | 要分析的 URL 查询字符串
  • sep | 用于分隔查询字符串中的键和值对的子字符串。默认值: '&'
  • eq | 用于分隔查询字符串中的键和值的子字符串。默认值: '='
  • options|
    • decodeURIComponent 解码查询字符串中的百分比编码字符时要使用的函数。默认值: querystring.unescape()
    • maxKeys 指定要分析的最大键数。指定 0 以删除键计数限制。默认值: 1000

该 querystring.parse() 方法将 URL 查询字符串 ( str ) 分析为键和值对的集合

例如,查询字符串 'foo=bar&abc=xyz&abc=123' 被解析为:

js
{
  "foo": "bar",
  "abc": ["xyz", "123"]
}

该 querystring.parse() 方法返回的对象不是从 JavaScript 继承的原型 Object 。这意味着 obj.toString() 、 obj.hasOwnProperty() 等典型 Object 方法未定义,并且不起作用

默认情况下,将查询字符串中的百分比编码字符使用 UTF-8 编码。如果使用替代字符编码,则需要指定替代 decodeURIComponent 选项:

js
querystring.parse(
  'w=%D6%D0%CE%C4&foo=bar', 
  null, 
  null,
  { 
    decodeURIComponent: gbkDecodeURIComponent 
  }
);

querystring.stringify(obj[, sep[, eq[, options]]]) ​

  • obj | 要序列化为 URL 查询字符串的对象
  • sep | 用于分隔查询字符串中的键和值对的子字符串。默认值: '&'
  • eq | 用于分隔查询字符串中的键和值的子字符串。默认值: '='
  • options |
    • encodeURIComponent 在查询字符串中将 URL 不安全字符转换为百分比编码时要使用的函数。默认值: querystring.escape()

它序列化传入 obj 的以下类型的值: <string> | <number> | <bigint> | <boolean> | <string[]> | <number[]> | <bigint[]> | <boolean[]> 必须是有限的。任何其他输入值将被强制为空字符串

js
querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' });
// Returns 'foo=bar&baz=qux&baz=quux&corge='

querystring.stringify({ foo: 'bar', baz: 'qux' }, ';', ':');
// Returns 'foo:bar;baz:qux'

默认情况下,查询字符串中需要百分比编码的字符将编码为 UTF-8。如果需要替代编码,则需要指定替代 encodeURIComponent 选项:

js
querystring.stringify({ w: '中文', foo: 'bar' }, null, null,
                      { encodeURIComponent: gbkEncodeURIComponent });

querystring.unescape(str) ​

该 querystring.unescape() 方法对给定 str 的 URL 百分比编码字符执行解码

该 querystring.unescape() 方法由使用 querystring.parse() ,通常不期望直接使用。导出它主要是为了允许应用程序代码在必要时通过分配给 querystring.unescape 替代函数来提供替换解码实现。

默认情况下,该 querystring.unescape() 方法将尝试使用 JavaScript 内置 decodeURIComponent() 方法进行解码。如果失败,将使用更安全的等效项,该等效项不会抛出格式错误的 URL。

Released under the MIT License.