一头扎进Node(二) - Query String

本文详细介绍了Node.js中QueryString模块的功能与使用方法,包括如何对URL查询字符串进行编码、解码、解析及序列化等操作,并通过多个实例展示了不同场景下的应用。

简介

该模块用与处理我们URL中的查询字符串参数,可以对一个url的query进行解析与反序列化,而且还提供了方法对参数进行编码转换!  

使用方法

var querystring = require('querystring');

API 使用说明

querystring.escape()
querystring.escape(str);//str:需要编码的字符串

案例代码如下:

var querystring = require('querystring');

var str = "name=名字";
var queryObj = querystring.escape(str);
console.info(queryObj); //name%3D%E5%90%8D%E5%AD%97
querystring.unescape()
querystring.unescape(str);//str:需要进行反编码的字符串

案例代码如下:

var querystring = require('querystring');

var str = "name%3D%E5%90%8D%E5%AD%97";
var queryObj = querystring.unescape(str);
console.info(queryObj);//name=名字
querystring.parse()
querystring.parse(str[, sep][, eq][, options]);
//str:需要解析的query字符串
//sep:各个参数的分隔符,默认为“&”
//eq:参数名称与参数值得分隔符,默认为“=”
//options:对象类型,用于解析或者反序列化的配置,例如decodeURIComponent、encodeURIComponent

案例代码如下:

var querystring = require('querystring');

var str1 = 'foo=bar&baz=qux&baz=quux&corge=';
var str2 = 'foo=bar,baz=qux,baz=quux,corge=';
var str3 = 'foo:bar,baz:qux,baz:quux,corge:';
var queryObj1 = querystring.parse(str1);
var queryObj2 = querystring.parse(str2);
var queryObj3 = querystring.parse(str3);
console.info(queryObj1); //{ foo: 'bar', baz: [ 'qux', 'quux' ], corge: '' }
console.info(queryObj2); //{ foo: 'bar,baz=qux,baz=quux,corge=' }
console.info(queryObj3); //{ 'foo:bar,baz:qux,baz:quux,corge:': '' }

queryObj2 = querystring.parse(str2, ',');
console.info(queryObj2); //{ foo: 'bar', baz: [ 'qux', 'quux' ], corge: '' }

queryObj3 = querystring.parse(str3, ',', ':');
console.info(queryObj3); //{ foo: 'bar', baz: [ 'qux', 'quux' ], corge: '' }

var str4 = 'name%3D%E5%90%8D%E5%AD%97&foo=bar';
queryObj4 = querystring.parse(str4, null, null, {
    decodeURIComponent: querystring.unescape
});
console.info(queryObj4); //{ foo: 'bar', baz: [ 'qux', 'quux' ], corge: '' ,name:'名字'}
querystring.stringify()
querystring.stringify(obj[, sep][, eq][, options])

//obj:一个query对象
//sep:用于参数之间的分隔符
//eq:用于参数名称与参数值之间的分隔符
//options:用于反序列化时的配置

案例代码如下:

var querystring = require('querystring');

var queryObj = { foo: 'bar', baz: ['qux', 'quux'], corge: '', name: '名字' };

var str = querystring.stringify(queryObj);
console.info(str); //foo=bar&baz=qux&baz=quux&corge=&name=%E5%90%8D%E5%AD%97

str = querystring.stringify(queryObj, ',');
console.info(str); //foo=bar,baz=qux,baz=quux,corge=,name=%E5%90%8D%E5%AD%97

str = querystring.stringify(queryObj, ',', ':');
console.info(str); //foo:bar,baz:qux,baz:quux,corge:,name:%E5%90%8D%E5%AD%97

str = querystring.stringify(queryObj, ',', ':', {
    encodeURIComponent: querystring.escape
});//foo:bar,baz:qux,baz:quux,corge:,name:%E5%90%8D%E5%AD%97

console.info(str);

转载于:https://www.cnblogs.com/mangoniki/p/5833808.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值