querystring模块
querystring 模块提供了一些实用函数,用于解析与格式化 URL 查询字符串。
处理get请求参数的时候用的比较多。
把字符串转换成对象 querystring.parse(str[, sep[, eq[, options]]])
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| let querystring = require('querystring');
let query = querystring.parse('name=lanpangzhi&age=18'); console.log(query); # 输出{ name: 'lanpangzhi', age: '18' }
// 添加第二个参数 sep let query2 = querystring.parse('name=lanpangzhi@age=18','@'); console.log(query2); # 输出{ name: 'lanpangzhi', age: '18' } // sep: 第二个参数用于界定查询字符串中的键值对的子字符串。默认为 '&'。
// 添加第三个参数 eq let query3 = querystring.parse('name|lanpangzhi@age|18','@','|'); console.log(query3); // eq: 用于界定查询字符串中的键与值的子字符串。默认为 '='。 // sep eq 可以替换割分字符串的关键字,在某些特定的场景会用的。
// 第四个参数用得比较少 let query = querystring.parse('name|lanpangzhi@age|18@age2|20@age3|21@age4|555','@','|',{ decodeURIComponent: function test(str) { return str+= '1' }, maxKeys: 4 }); console.log(query); # 输出 { name1: 'lanpangzhi1', age1: '181', age21: '201', age31: '211' } // 第四个参数是一个对象, 里面有 decodeURIComponent 和 maxKeys 两个参数。 // decodeURIComponent: 解码查询字符串的字符时使用的函数。默认为 querystring.unescape()。 // maxKeys: 指定要解析的键的最大数量。默认为 1000。指定为 0 则不限制。 // 我刚才指定是4 所以 age4 这个参数没输出。
|
把对象转换成字符串 querystring.stringify(obj[, sep[, eq[, options]]])
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| let querystring = require('querystring');
let obj = { name: 'lanpangzhi', baz: ['qux', 'quux'], age: '18' }; let str = querystring.stringify(obj); console.log(str); # 输出 name=lanpangzhi&baz=qux&baz=quux&age=18
// 添加第二个参数 sep let obj = { name: 'lanpangzhi', age: '18' }; let str = querystring.stringify(obj,'@'); console.log(str); # 输出 name=lanpangzhi@age=18 // sep: 第二个参数用于界定查询字符串中的键值对的子字符串。默认为 '&'。
// 添加第三个参数 eq let obj = { name: 'lanpangzhi', age: '18' }; let str = querystring.stringify(obj,'@','|'); console.log(str); // eq: 用于界定查询字符串中的键与值的子字符串。默认为 '='。
// 第四个参数 options 基本上用不到 // encodeURIComponent <Function> : 把对象中的字符转换成查询字符串时使用的函数。默认为 querystring.escape()。
|
querystring.stringify 和 querystring.parse 功能正好是对应的, 基本上第四个参数用不到,第二和第三个参数只有在某些特定的场景才会使用,指定切割默写字符,或者输出某些字符。
querystring 这个模块还有两个方法,但是基本上不会用到,更多可以去node中文网或者官网查看。
新年快乐2018
参考
http://nodejs.cn/api/querystring.html