node.js入门教程之querystring模块的使用方法


Posted in Javascript onFebruary 27, 2017

querystring模块

querystring从字面上的意思就是查询字符串,一般是对http请求所带的数据进行解析。querystring模块只提供4个方法,在我看来,这4个方法是相对应的。

这4个方法分别是querystring.parsequerystring.stringify,querystring.escapequerystring.unescape

首先,使用querystring模块之前,需要require进来:

const querystring = require("querystring");

其次,就可以使用模块下的方法了:

一、querystring.parse(str,separator,eq,options)

parse这个方法是将一个字符串反序列化为一个对象。

参数:

 str指需要反序列化的字符串;

 separator(可省)指用于分割str这个字符串的字符或字符串,默认值为"&";

 eq(可省)指用于划分键和值的字符或字符串,默认值为"=";

 options(可省)该参数是一个对象,里面可设置maxKeys和decodeURIComponent这两个属性:

1.maxKeys:传入一个number类型,指定解析键值对的最大值,默认值为1000,如果设置为0时,则取消解析的数量限制;

2.decodeURIComponent:传入一个function,用于对含有%的字符串进行解码,默认值为querystring.unescape。在官方API的例子中,使用gbkDecodeURIComponent这个方法会报错,显示gbkDecodeURIComponent is no defined,这是因为在使用这个gbkDecodeURIComponent这个方法之前需要先进行定义。在API中也写了Assuming gbkDecodeURIComponent function already exists...这句话的意思是”假设这个gbkDecodeURIComponent方法已经存在”。

例子1,querystring.parse

querystring.parse("name=whitemu&sex=man&sex=women");
/*
return:
{ name: 'whitemu', sex: [ 'man', 'women' ] }
*/
querystring.parse("name=whitemu#sex=man#sex=women","#",null,{maxKeys:2});
/*
return:
{ name: 'whitemu', sex: 'man' }
*/

二、querystring.stringify(obj,separator,eq,options)

stringify这个方法是将一个对象序列化成一个字符串,与querystring.parse相对。

参数:

 obj指需要序列化的对象

 separator(可省)用于连接键值对的字符或字符串,默认值为"&";

 eq(可省)用于连接键和值的字符或字符串,默认值为"=";

 options(可省)传入一个对象,该对象可设置encodeURIComponent这个属性:

1.encodeURIComponent:值的类型为function,可以将一个不安全的url字符串转换成百分比的形式,默认值为querystring.escape()

例子2,querystring.stringify

querystring.stringify({name: 'whitemu', sex: [ 'man', 'women' ] });
/*
return:
'name=whitemu&sex=man&sex=women'
*/
querystring.stringify({name: 'whitemu', sex: [ 'man', 'women' ] },"*","$");
/*
return:
'name$whitemu*sex$man*sex$women'
*/

三、querystring.escape(str)

escape可使传入的字符串进行编码

例子3,querystring.escape

querystring.escape("name=慕白");
/*
return:
'name%3D%E6%85%95%E7%99%BD'
*/

四、querystring.unescape(str)

unescape方法可将含有%的字符串进行解码

例子4,querystring.unescape

querystring.unescape('name%3D%E6%85%95%E7%99%BD');
/*
return:
'name=慕白'
*/

总结

querystring这个模块相对的还是比较简单,仅有4个方法。

1、querystring.stringify序列化;

2、querystring.parse反序列化;

3、querystring.escape编码;

4、querystring.unescape解码;

好了,以上就是这篇文章的全部内容了,当然啦,鄙人对于该模块的研究还是不深,仅仅对该模块的API做了简单的翻译和加上自己的一些理解,若有错误希望能够指正,一起探讨。同时希望本文的内容对大家能有一定的帮助。

Javascript 相关文章推荐
Javascript实现简单二级下拉菜单实例
Jun 15 Javascript
node.js超时timeout详解
Nov 26 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
Mar 05 Javascript
jQuery中的Deferred和promise 的区别
Apr 03 Javascript
BootStrap 实现各种样式的进度条效果
Dec 07 Javascript
详解js的六大数据类型
Dec 27 Javascript
jQuery基于ajax操作json数据简单示例
Jan 05 Javascript
MvcPager分页控件 适用于Bootstrap
Jun 03 Javascript
Angular.JS中指令ng-if的注意事项小结
Jun 21 Javascript
inner join 内联与left join 左联的实例代码
Sep 18 Javascript
js动态获取时间的方法分析
Aug 02 Javascript
JS实现纵向轮播图(初级版)
Jan 18 Javascript
JavaScript中数组Array方法详解
Feb 27 #Javascript
从零学习node.js之详解异步控制工具async(八)
Feb 27 #Javascript
jQuery基本选择器和层次选择器学习使用
Feb 27 #Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
Feb 27 #Javascript
flag和jq on 的绑定多个对象和方法(必看)
Feb 27 #Javascript
利用Node.js+Koa框架实现前后端交互的方法
Feb 27 #Javascript
详谈js中数组(array)和对象(object)的区别
Feb 27 #Javascript
You might like
PHP中ini_set与ini_get用法实例
2014/11/04 PHP
非常实用的PHP常用函数汇总
2014/12/17 PHP
PHP数组游标实现对数组的各种操作详解
2016/01/26 PHP
php_pdo 预处理语句详解
2016/11/21 PHP
python进程与线程小结实例分析
2018/11/11 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
JavaScript Event学习第十章 一些可替换的事件对
2010/02/10 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
JS中with的替代方法与String中的正则方法详解
2016/12/23 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
详解Vue爬坑之vuex初识
2017/06/14 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
python 多线程实现检测服务器在线情况
2015/11/25 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
python读取txt文件并取其某一列数据的示例
2019/02/19 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
python定义类self用法实例解析
2020/01/22 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
Python基于Faker假数据构造库
2020/11/30 Python
Html5写一个简单的俄罗斯方块小游戏
2019/12/03 HTML / CSS
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
高中军训感想300字
2014/03/04 职场文书
三八妇女节活动总结
2014/05/04 职场文书
会计专业自荐信
2014/06/03 职场文书
食品安全标语
2014/06/07 职场文书
五四演讲稿范文
2014/09/03 职场文书
解析Redis Cluster原理
2021/06/21 Redis