queryString字面上的意思是查询字符串,一般是对http请求所带的数据进行解析。queryString模块提供了四个方法:
1.queryString.parse(str,separator,eq,options)
该方法是将一个字符串反序列化为一个对象。
参数说明:
str:指需要反序列化的字符串
separator(可选):指用于分割str这个字符串放入字符或者字符串,默认值为’&’
eq(可选):指用于划分键和值的字符或者字符串,默认值为‘=’
options(可选):里面可设置maxKeys和decodeURIComponent这两个属性:
maxKeys:
传入一个number类型,指定解析键值对的最大值,默认值为1000,如果设置为0时,则取消解析的数量限制;
decodeURIComponent:
传入一个function,用于对含有%的字符串进行解码,默认值为querystring.unescape。在官方API的例子中,使用gbkDecodeURIComponent这个方法会报错,显示gbkDecodeURIComponent is no defined,这是因为在使用这个gbkDecodeURIComponent这个方法之前需要先进行定义。在API中也写了Assuming gbkDecodeURIComponent function already exists…这句话的意思是”假设这个gbkDecodeURIComponent方法已经存在”。
举例说明:
var querystring = require('querystring');
console.log(querystring.parse('name = xiaohu&sex=man&sex=woman'));
console.log(querystring.parse('name=xiaohu#sex=man#sex=woman','#',null,{maxKeys:2}));
输出结果:
{ 'name ': ' xiaohu', sex: [ 'man', 'woman' ] }
{ name: 'xiaohu', sex: 'man' }
2. querystring.stringify(obj,separator,eq,options)
stringify这个方法是将一个对象序列化成一个字符串,与querystring.parse相对。
参数:obj指需要序列化的对象
separator(可省)用于连接键值对的字符或字符串,默认值为”&”;
eq(可省)用于连接键和值的字符或字符串,默认值为”=”;
options(可省)传入一个对象,该对象可设置encodeURIComponent这个属性:
encodeURIComponent:值的类型为function,可以将一个不安全的url字符串转换成百分比的形式,默认值为querystring.escape()。
var querystring = require('querystring');
console.log(querystring.stringify({name:'xiaohu',sex:['man','woman']}));
console.log(querystring.stringify({name:'xiaohu',sex:['man','woman']},'*','$'));
输出结果:
name=xiaohu&sex=man&sex=woman
name$xiaohu*sex$man*sex$woman
3.querystring.escape(str)
escape可以使传入的字符串进行编码
var querystring = require('querystring');
console.log(querystring.escape('name=小胡'));
//输出name%3D%E5%B0%8F%E8%83%A1
4.querystring.unscape(str)
unscape方法可将含有%的字符串进行编码
var querystring = require('querystring');
console.log(querystring.unescape('name%3D%E5%B0%8F%E8%83%A1'));
//输出name=小胡