querystring模塊用於處理query字符串,包含以下方法:
- parse、decode
- escape
- unescape
- encode、stringify
parse、decode方法
parse與decode方法是一樣的,都用於將query字符串解析成對象,例如:
> var qs = require("querystring") > qs.parse("a=1&b=2&c=3") { a: "1", b: "2", c: "3"}
注意:stringify返回的是字符串類型,而parse非字符串類型;傳入的url不能包含?。
parse方法還有三個可選參數,分別是分隔符(默認為&),賦值符(默認為=),以及配置對象,配置對象又有兩個可選參數,分別是````maxKeys(最多能解析多少個鍵值對)和
decodeURIComponent(用於解碼非utf-8編碼字符串,默認為
querystring.unescape```)。
例如:
querystring.parse('w=%D6%D0%CE%C4&foo=bar', null, null, { decodeURIComponent: gbkDecodeURIComponent }) // returns { w: '中文', foo: 'bar' }
stringify、encode方法
這兩個方法的作用也是一樣的,用於將對象轉換成query字符串。如果屬性值不是string、boolean和number中的一種,它就不能序列化,返回內容中的關鍵字對應的值為空。
例如:
> var obj = {a:1, b:2, func: function(){console.log("func")}} undefined > qs.stringify(obj) 'a=1&b=2&func=' > qs.encode(obj) 'a=1&b=2&func='
同樣的,stringify或者encode方法也有三個可選參數,分別是分隔符(默認為&),賦值符(默認為=),以及配置對象,配置對象可包含屬性decodeURIComponent
(用於解碼非utf-8編碼字符串,默認為querystring.escape
)。
例如:
// 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'
encode
參數編碼
> var qs = require("querystring") > qs.escape("中國") '%E4%B8%AD%E5%9B%BD'
unescape
參數解碼
> var param = '%E4%B8%AD%E5%9B%BD' undefined > qs.unescape('%E4%B8%AD%E5%9B%BD') '中國'