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.