querystring模块是Node.js中的工具模块之一,用于处理URL中的查询字符串,即:querystring部分。查询字符串指:URL字符串中,从问号"?"(不包括?)开始到锚点"#"或者到URL字符串的结束(存在#,则到#结束,不存在则到URL字符串结束)的部分叫做查询字符串。querystring模块可将URL查询字符串解析为对象,或将对象序列化为查询字符串。
querystring模块是Node.js的原生模块,要引用require(‘querystring’)
即可。querystring模块中包括以下4个方法:
- 将对象序列化为一个查询字符串:querystring.stringify(obj[, sep][, eq][, options])
- 将查询字符串解析为对象:querystring.parse(str[, sep][, eq][, options])
- 编码查询字符串中的参数:querystring.escape
- 解码查询字符串中的参数:querystring.unescape
1. 将对象序列化为一个查询字符串:querystring.stringify(obj[, sep][, eq][, options])
querystring.stringify
方法可以将对象序列化为一个querystring,使用示例如下:
var querystring = require('querystring'); var itbilu = {siteName:'IT笔录', url:'http://itbilu.com'}; console.log(querystring.stringify(itbilu)); //输出如下 siteName=IT%E7%AC%94%E5%BD%95&url=http%3A%2F%2Fitbilu.com
不指定后面三个可选参数时,默认用"&"(分割符)连接参数,"="(分配符)符号连接参数名和参数值,并用encodeURIComponent方法对参数进行编码。序列化对象时,可以指定分割符和分配符。示例如下:
var querystring = require('querystring'); var itbilu = {siteName:'IT笔录', url:'http://itbilu.com'}; console.log(querystring.stringify(itbilu, ';', ':')); //输出如下 siteName:IT%E7%AC%94%E5%BD%95;url:http%3A%2F%2Fitbilu.com
2. 将查询字符串解析为对象:querystring.parse(str[, sep][, eq][, options])
querystring.parse
方法用于将查询字符串解析为对象,传入第二个和第三个可选参数时,会覆盖默认的分割符('&')和分配符('=')。options对象中包含maxKeys属性,默认为1000,用于限制处理过的键(key)的数量,设为0可以去除键(key)的数量限制。示例如下:
var querystring = require('querystring'); console.log(querystring.parse('siteName=IT笔录&url=http://itbilu.com')); console.log(querystring.parse('siteName:IT笔录;url:http://itbilu.com',';',':')); //上面两行输出相同,如下: { siteName: 'IT笔录', url: 'http://itbilu.com' }
3. 编码查询字符串中的参数:querystring.escape
querystring.escape
方法会对查询字符串进行编码,在使用querystring.stringify
方法时可能会用到。示例如下:
var querystring = require('querystring'); console.log(querystring.escape('siteName=IT笔录&url=http://itbilu.com')); //输出如下 siteName%3DIT%E7%AC%94%E5%BD%95%26url%3Dhttp%3A%2F%2Fitbilu.com
4. 解码查询字符串中的参数:querystring.unescape
querystring.unescape
方法是和querystring.escape
相逆的方法,在使用querystring.parse
方法时可能会用到。简单示例如下
var querystring = require('querystring'); var esc = querystring.escape('siteName=IT笔录&url=http://itbilu.com'); console.log(querystring.unescape(esc)); //输出如下 siteName=IT笔录&url=http://itbilu.com