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 相关文章推荐
JQuery困惑—包装集 DOM节点
Oct 16 Javascript
js中复制行和删除行的操作实例
Jun 25 Javascript
js网页版计算器的简单实现
Jul 02 Javascript
ECMAScript6中Set/WeakSet详解
Jun 12 Javascript
JQuery菜单效果的两个实例讲解(3)
Sep 17 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
Nov 02 Javascript
下一代Bootstrap的5个特点 超酷炫!
Jun 17 Javascript
jQuery快速高效制作网页交互特效
Feb 24 Javascript
从vue源码解析Vue.set()和this.$set()
Aug 30 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
Jun 17 Javascript
Moment.js实现多个同时倒计时
Aug 26 Javascript
ant design 日期格式化的实现
Oct 27 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实现异步操作的研究
2013/02/03 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
PHP经典面试题集锦
2015/03/19 PHP
PHP微信API接口类
2016/08/22 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
PHP编程中的Session阻塞问题与解决方法分析
2017/08/07 PHP
mouse_on_title.js
2006/08/25 Javascript
JavaScript开发时的五个注意事项
2007/12/08 Javascript
javascript不同页面传值的改进版
2008/09/30 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
JQuery animate动画应用示例
2019/05/14 jQuery
VSCode 配置uni-app的方法
2020/07/11 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
python 文件和路径操作函数小结
2009/11/23 Python
Python中实现对list做减法操作介绍
2015/01/09 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
Django实现将views.py中的数据传递到前端html页面,并展示
2020/03/16 Python
Django更新models数据库结构步骤
2020/04/01 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
《最大的“书”》教学反思
2014/02/14 职场文书
如何写股份合作协议书
2014/09/11 职场文书
白酒代理协议书范本
2014/10/26 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
全国爱眼日活动总结
2015/02/27 职场文书