### 穩定度: 2 - 穩定
這個模塊提供了處理 查詢字符串 的工具。它提供了以下方法:
#### querystring.stringify(obj[, sep][, eq][, options])
序列化一個對象為一個查詢字符串。可以可選地覆蓋默認的分隔符(`'&'`)和賦值符號(`'='`)。
`options`對象可以包含`encodeURIComponent`屬性(默認為`querystring.escape`),它被用來在需要時,將字符串編碼為非utf-8編碼。
例子:
~~~
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'
// Suppose gbkEncodeURIComponent function already exists,
// it can encode string with `gbk` encoding
querystring.stringify({ w: '中文', foo: 'bar' }, null, null,
{ encodeURIComponent: gbkEncodeURIComponent })
// returns
'w=%D6%D0%CE%C4&foo=bar'
~~~
#### querystring.parse(str[, sep][, eq][, options])
反序列化一個查詢字符串為一個對象。可以可選地覆蓋默認的分隔符(`'&'`)和賦值符號(`'='`)。
`options`可以包含`maxKeys`屬性(默認為`1000`)。它被用來限制被處理的鍵。將其設置為`0`會移除限制。
`options`可以包含`decodeURIComponent`屬性(默認為`querystring.unescape`),它被用來在需要時,解碼非uft8編碼字符串。
例子:
~~~
querystring.parse('foo=bar&baz=qux&baz=quux&corge')
// returns
{ foo: 'bar', baz: ['qux', 'quux'], corge: '' }
// Suppose gbkDecodeURIComponent function already exists,
// it can decode `gbk` encoding string
querystring.parse('w=%D6%D0%CE%C4&foo=bar', null, null,
{ decodeURIComponent: gbkDecodeURIComponent })
// returns
{ w: '中文', foo: 'bar' }
~~~
#### querystring.escape
`querystring.stringify`使用的轉義函數,在需要時可以被覆蓋。
#### querystring.unescape
`querystring.parse`使用的反轉義函數,在需要時可以被覆蓋。
首先它會嘗試使用`decodeURIComponent`,但是如果失敗了,它就轉而使用一個不會在畸形URL上拋出錯誤的更安全的等價方法。