Query String模块为解析和格式化URL中?后面的参数(查询字符串)提供了4个方法:

  • querystring.escape(str)
  • querystring.parse(str[, sep[, eq[, options]]])
  • querystring.stringify(obj[, sep[, eq[, options]]])
  • querystring.unescape(str)


你可以通过下面的方式直接使用此模块:

var querystring = require('querystring');

querystring.escape(str)

用来编码URL参数,Javascript內建的encodeURIComponent()方法的实现

var str = '中文字符&zhongwenzifu#';
console.log(querystring.escape(str));
// 输出如下
%E4%B8%AD%E6%96%87%E5%AD%97%E7%AC%A6%26zhongwenzifu%23

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

用来解析URL参数,使用默认分隔符&和分配符=

例如:'foo=bar&abc=xyz&abc=123' 将会解析为如下结果

var str = 'foo=bar&abc=xyz&abc=123';
console.log(querystring.parse(str, '&', '='));
// 结果如下
{
  foo: 'bar',
  abc: ['xyz', '123']
}

你还可以自定义实现解析过程

// 假设 gbkDecodeURIComponent() 函数已经定义...

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

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

将对象格式化为参数字符串

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'

你还可以自定义实现格式化过程

// 假设 gbkEncodeURIComponent() 函数已经定义...

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

querystring.unescape(str)

用来解码URL参数,Javascript內建的decodeURIComponent()方法的实现

var str = '%E4%B8%AD%E6%96%87%E5%AD%97%E7%AC%A6%26zhongwenzifu%23';
console.log(querystring.unescape(str));
// 输出如下
中文字符&zhongwenzifu#