这里主要记下querystring模块的使用方法。

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

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

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

1 const querystring = require("querystring");

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

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

 1 querystring.parse("name=whitemu&sex=man&sex=women");2 /*3 return:4 { name: 'whitemu', sex: [ 'man', 'women' ] }5 */6 querystring.parse("name=whitemu#sex=man#sex=women","#",null,{maxKeys:2});7 /*8 return:9 { name: 'whitemu', sex: 'man' }
10 */

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

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个方法。

  querystring.stringify序列化;

  querystring.parse反序列化;

  querystring.escape编码;

  querystring.unescape解码;

  当然啦,鄙人对于该模块的研究还是不深,仅仅对该模块的API做了简单的翻译和加上自己的一些理解,若有错误希望能够指正,一起探讨。。。

转自:https://www.cnblogs.com/whiteMu/p/5986297.html

转载于:https://www.cnblogs.com/dreamhighqiu/p/11002581.html

nodejs之querystring模块相关推荐

  1. nodejs没有net模块_Node.js实战16:用http模块创建web服务器

    Nodejs的http模块,是基于net.server,经过c++二次封装,也是nodejs的核心模块. 功能比net.server更强,可解析和操作更多细节内容,如值.content-length. ...

  2. url模块和querystring模块

    url模块 我们可以使用.parse方法来将一个URL字符串转换为URL对象,示例如下. 1. URL各部分说明 var url = require('url'); //加载url模块 url.par ...

  3. Nodejs的http模块

    一.http服务器 我们知道传统的HTTP服务器是由Aphche.Nginx.IIS之类的软件来搭建的,但是Nodejs并不需要,Nodejs提供了http模块,自身就可以用来构建服务器.例如,下面的 ...

  4. Nodejs中的模块系统

    一.模块化的定义 ①具有文件作用域 ②具有通信规则:加载和导出规则 二.CommonJS模块规范 1.nodejs中的模块系统,具有文件作用域,也具有通信规则,使用require方法加载模块,使用ex ...

  5. nodejs的mysql模块_Nodejs的mysql模块学习(一)

    介绍 mysql npm包 是一个nodejs的模块,由JavaScript编写 安装 npm install mysql 建立连接 var mysql = require('mysql');//引用 ...

  6. Nodejs全局安装模块后找不到命令的解决方法

    Nodejs全局安装模块后找不到命令的解决方法 参考文章: (1)Nodejs全局安装模块后找不到命令的解决方法 (2)https://www.cnblogs.com/xiaoyucoding/p/1 ...

  7. Nodejs的url模块方法

    Nodejs的url模块方法 nodejs里面的一个简单的模块,url模块.这个url的模块要使用的话需要先引入.若只是在命令行里比如cmd或git bash 等使用url这个模块的话,是不需要req ...

  8. nodejs中的模块的理解

    nodejs所谓的模块就是一个文件,或者是匿名函数.(CommonJs) require exports module.exports. 为什么直接console.log(typeof require ...

  9. NodeJS 之 fs 模块(文件操作)

    NodeJS 之 fs 模块(文件系统模块) 参考 描述 fs(File System) 文件 读取 fs.readFile() 判断文件是否读取成功 编码 写入 fs.writeFile() 覆盖 ...

  10. NodeJS 之 fs 模块(路径动态拼接问题)

    NodeJS 之 fs 模块(路径动态拼接问题) 参考 描述 问题 描述 准备工作 content.txt main.js 复现 前奏 惊雷 再探 分析 解决 __dirname path 模块 pa ...

最新文章

  1. 利用WSS搭建学生作业平台
  2. java导出模板 pdf设置字体_有哪些相见恨晚的PPT模板网站?
  3. 在网上找了一些j2ee的视频教程,有需要的朋友可以看看
  4. cmd命令【实施工程师技能】
  5. 一些图形学中的数学应用
  6. js打开、关闭页面和运行代码那些事
  7. 几个简单的正则小例子
  8. *【HDU - 4006】 The kth great number(优先队列 or 线段树)
  9. Codeforces-808D Array Division (multiset 折半???)
  10. 下运行maven命令_如何在批处理模式下运行 top 命令
  11. 序号47指标横向展示.xlsx_电力监控系统安全防护规定Akey310参数指标
  12. C++重载->和*运算符
  13. Redis监控利器---Redis State
  14. CPython中多线程的限制
  15. html5实现最简单的文件下载
  16. 基于OpenCV及Python的数独问题识别与求解(一)图像预处理
  17. 记录一次设置内网通过路由器映射一个内网ip和端口到外网过程
  18. 企业OA系统在低代码平台中要如何开发?
  19. [面面面]搞定计算机面试常见知识点——Java篇
  20. 额,我要说一件重要的事+用C++编写一个走迷宫小游戏(1.1版)

热门文章

  1. linux getopt_long函数,新手疑问:getopt_long()重入问题
  2. centos7添加新硬盘并挂载
  3. layui upload 点击上传没有反应 JS动态加载
  4. 基于SSM的医学健康网站
  5. 数据库的表连接和函数学习
  6. java方法语句错误需要标识符_java错误需要标识符_Java错误 找不到符号
  7. 双指针-维护不变区域
  8. 为什么双重检查锁模式需要 volatile ?
  9. Java 序列化与主流编解码技术框架介绍
  10. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_19-页面静态化-模板管理-模板存储...