這個(gè)模塊提供了處理 查詢字符串 的工具。它提供了以下方法:
序列化一個(gè)對(duì)象為一個(gè)查詢字符串??梢钥蛇x地覆蓋默認(rèn)的分隔符('&'
)和賦值符號(hào)('='
)。
options
對(duì)象可以包含encodeURIComponent
屬性(默認(rèn)為querystring.escape
),它被用來(lái)在需要時(shí),將字符串編碼為非 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'
反序列化一個(gè)查詢字符串為一個(gè)對(duì)象??梢钥蛇x地覆蓋默認(rèn)的分隔符('&'
)和賦值符號(hào)('='
)。
options
可以包含maxKeys
屬性(默認(rèn)為1000
)。它被用來(lái)限制被處理的鍵。將其設(shè)置為0
會(huì)移除限制。
options
可以包含decodeURIComponent
屬性(默認(rèn)為querystring.unescape
),它被用來(lái)在需要時(shí),解碼非 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.stringify
使用的轉(zhuǎn)義函數(shù),在需要時(shí)可以被覆蓋。
querystring.parse
使用的反轉(zhuǎn)義函數(shù),在需要時(shí)可以被覆蓋。
首先它會(huì)嘗試使用decodeURIComponent
,但是如果失敗了,它就轉(zhuǎn)而使用一個(gè)不會(huì)在畸形 URL 上拋出錯(cuò)誤的更安全的等價(jià)方法。