查询字符串

该模块提供了处理查询字符串的辅助函数。

querystring.escape

该转义函数供 querystring.stringify 使用,必要时可以重写。

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

该方法用于将字符串反序列化为对象,第二和第三个参数分别表示分隔符(默认为 ‘&’)和分配符(默认为 ‘=’)。

options 对象可以包含 maxKeys 属性(默认值为 1000),该属性用于限制处理过的进程数量,如果该属性的值为 0,则表示不限制。

options 对象可以包含 decodeURIComponent 属性(默认值为 querystring.unescape),如有需要可用于解码非 UTF-8 编码的字符串。

  1. querystring.parse('foo=bar&baz=qux&baz=quux&corge')
  2. // returns
  3. { foo: 'bar', baz: ['qux', 'quux'], corge: '' }
  4. // Suppose gbkDecodeURIComponent function already exists,
  5. // it can decode `gbk` encoding string
  6. querystring.parse('w=%D6%D0%CE%C4&foo=bar', null, null,
  7. { decodeURIComponent: gbkDecodeURIComponent })
  8. // returns
  9. { w: '中文', foo: 'bar' }

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

该方法用于将对象序列化为字符串,第二和第三个参数分别表示分隔符(默认为 ‘&’)和分配符(默认为 ‘=’)。

options 对象可以包含 encodeURIComponent 属性(默认值为 querystring.escape),如有需要可用于转义非 UTF-8 编码的字符串。

  1. querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' })
  2. // returns
  3. 'foo=bar&baz=qux&baz=quux&corge='
  4. querystring.stringify({foo: 'bar', baz: 'qux'}, ';', ':')
  5. // returns
  6. 'foo:bar;baz:qux'
  7. // Suppose gbkEncodeURIComponent function already exists,
  8. // it can encode string with `gbk` encoding
  9. querystring.stringify({ w: '中文', foo: 'bar' }, null, null,
  10. { encodeURIComponent: gbkEncodeURIComponent })
  11. // returns
  12. 'w=%D6%D0%CE%C4&foo=bar'

querystring.unescape

该编码函数供 querystring.parse 使用,必要时可以重写。该函数首先会尝试使用 decodeURIComponent 进行解码,如果解码失败会回退到一个安全状态,不会抛出错误的 URL。