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

这4个方法分别是querystring.parse和querystring.stringify,querystring.escape和querystring.unescape。

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

const querystring = require("querystring");

然后,就可以使用模块下的方法了:

1 querystring.parse(str,separator,eq,options):

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

参数: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方法已经存在”。

例子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' }
*/

2 querystring.stringify(obj,separator,eq,options):

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

参数:obj指需要序列化的对象

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

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

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

   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'
*/

3 querystring.escape(str):

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

例子3,querystring.escape

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

4 querystring.unescape(str):

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

例子4,querystring.unescape

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

总结:

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

querystring.stringify序列化;

querystring.parse反序列化;

querystring.escape编码;

querystring.unescape解码;

Node.js之querystring模块的更多相关文章

  1. node.js的querystring模块

    querystring主要是用于对字符串进行操作和解析.共有四个方法:querystring.parse,querystring.stringify,querystring.escape,querys ...

  2. 利用Node.js的Net模块实现一个命令行多人聊天室

    1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类:Server和Socket类.工厂方法. Server类 ...

  3. Node.js的Formidable模块的使用

    今天总结了下Node.js的Formidable模块的使用,下面做一些简要的说明. 1)     创建Formidable.IncomingForm对象 var form = new formidab ...

  4. Node.js入门:模块机制

    CommonJS规范      早在Netscape诞生不久后,JavaScript就一直在探索本地编程的路,Rhino是其代表产物.无奈那时服务端JavaScript走的路均是参考众多服务器端语言来 ...

  5. Node.js的net模块

    net模块提供了一个异步网络包装器,用于TCP网络编程,它包含了创建服务器和客户端的方法 创建TCP服务器 net.createServer方法 创建客户端去连接服务器 net.connect方法 简 ...

  6. node.js中express模块创建服务器和http模块客户端发请求

    首先下载express模块,命令行输入 npm install express 1.node.js中express模块创建服务端 在js代码同文件位置新建一个文件夹(www_root),里面存放网页文 ...

  7. node.js中ws模块创建服务端和客户端,网页WebSocket客户端

    首先下载websocket模块,命令行输入 npm install ws 1.node.js中ws模块创建服务端 // 加载node上websocket模块 ws; var ws = require( ...

  8. node.js中net模块创建服务器和客户端(TCP)

    node.js中net模块创建服务器和客户端 1.node.js中net模块创建服务器(net.createServer) // 将net模块 引入进来 var net = require(" ...

  9. 第5月第10天 node.js的request模块

    1.node.js的request模块 http://www.cnblogs.com/meteoric_cry/archive/2012/08/18/2645530.html

随机推荐

  1. linu基础命令1

    /根目录,第一级目录 1.ls列出当前目录下的文件和目录-a: 列出所有的文件,包括所有以.开头的隐藏文件-d: 列出目录本身,并不包含目录中的文件(-ld)-h: 和-l一起使用,文件大小人类易读 ...

  2. C++中sort函数使用方法

    一.sort函数 1.sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们不用考 ...

  3. Egret入门学习日记 --- 第五篇(书中 3.5节 内容)

    第五篇(书中 3.5节 内容) 今天得把昨天的问题解决了才行. 去了Q群,碰到一位大大,他给我解惑了.Thanks♪(・ω・)ノ 这是我之前按照书上写的方式写的,并没有效果. 然后大大给我解答了: 后 ...

  4. KinectFusion 介绍

    原文链接 KinectFusion简介 KinectFusion是微软在2011年发表的一篇论文里提到的点云重建的方法,论文题目是:KinectFusion: Real-Time Dense Surf ...

  5. 【AI-人工智能-mmdetection】ModuleNotFoundError: No module named 'mmdet.version'

    在集成 mmdetection 框架时遇到这样的问题. ModuleNotFoundError: No module named 'mmdet.version' mmdetection 框架搭建过程很 ...

  6. SSM004/工作内容

    一.java执行sql脚本 参考博客:java调用SQL脚本执行的方案 1.Service层代码:目的随spring容器启动即执行 //Service层代码 @Component public cla ...

  7. Prometheus Querying Function rate() vs irate()

    rate() rate(v range-vector) calculates the per-second average rate of increase of the time series in ...

  8. CSS基本样式-文本属性

    字体属性 文本属性呢,自我认为就是写文档的一些格式属性,例如:字体颜色,字体加粗,字体大小,字体类型等,而且我们在输出测试用例报告的时候也可以用到这些属性,对测试报告进行优化. <html> ...

  9. 初步学习jquery学习笔记(二)

    jQuery事件 jquery是为事件处理而设计的 什么是事件? 页面对不同访问者的相应叫做事件. 事件处理程序指的是html中发生某些事件所调用的方法 实例: 在元素上移动鼠标 选取单选按钮 点击元 ...

  10. laravel5.5学习2-路由系统

    一.初识路由 路由系统是所有 PHP 框架的核心,路由承载的是 URL 到代码片段的映射,不同的框架所附带的路由系统是这个框架本质最真实的写照,一丝不挂,一览无余.Laravel 路由中文文档:htt ...