Node.js学习之查询字符串解析querystring详解


Posted in Javascript onSeptember 28, 2017

前言

查询字符串模块提供了解析和格式化工具URL查询字符串的API,本文将详细介绍关于Node.js查询字符串解析querystring的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

一、querystring.parse(str[, sep[, eq[, options]]])

这个API将URL查询字符串解析为键和值的集合

  • str:URL查询字符串
  • sep:标明字符串中用于划分键值对的符号,默认为“&”
  • eq:用以标明查询字符串中键和值之间的符号,默认为“=”

例子如下:

const querystring = require('querystring');
const url = require('url');
var queryUrl="http://localhost:8888/bb?name=李浩&memo=helloworld&memo=helloC";
queryUrl=url.parse(queryUrl).query;
console.log(querystring.parse(queryUrl)) ;
----------------------------------------------------
// 输出 { name: '李浩', memo: [ 'helloworld', 'helloC' ] }

带参数的例子:

const querystring = require('querystring');
const url = require('url');
var queryUrl="http://localhost:8888/bb?name==李浩*memo==helloworld*memo==helloC";
queryUrl=url.parse(queryUrl).query;
console.log(querystring.parse(queryUrl,'*','==')) ; 
----------------------------------------------------
// 输出 { name: '李浩', memo: [ 'helloworld', 'helloC' ] }

二、querystring.stringify(obj[, sep[, eq[, options]]])

这个API从一个给定的对象中生成一个URL查询字符串,通过遍历对象“自己的属性”。

  • obj为给定的对象
  • sep为键值对之间的分隔符,默认为“&”
  • eq为键和值之间的连接符号,默认为“=”

例子如下:

const qs=require("querystring");
var obj={ name: '李浩', memo: [ 'helloworld', 'helloC' ] }
console.log(
 qs.stringify(obj)
)
/* 
 输出 name=%E6%9D%8E%E6%B5%A9&memo=helloworld&memo=helloC;
 API默认是对中文进行了编码,下面我们再说编码解码的API
*/

带参数的例子:

const qs=require("querystring");
var obj={ name: '李浩', memo: [ 'helloworld', 'helloC' ] }
console.log(
 qs.stringify(obj,'@','==')
)

输出  name==%E6%9D%8E%E6%B5%A9@memo==helloworld@memo==helloC;

相信应该看出了带参数和不带参数的区别了吧

三、querystring.unescape(str)

这个API是对URL查询字符串中的URL进行解码的,例如上面我们进行stringify操作的时候,中文就会被编码,那么中文在URL中的时候也会被解析为编码后的样子,这个API一般配合querystring.parse()使用

我们就拿上面中文出现编码的URL查询字符串来举例

例子如下:

const qs = require("querystring");
var url = "name=%E6%9D%8E%E6%B5%A9&memo=helloworld&memo=helloC"
var normalStr = qs.unescape(url)
console.log(
 qs.parse(normalStr)
)
//输出 { name: '李浩', memo: [ 'helloworld', 'helloC' ] }

四、querystring.escape(str)

这个API相当于就是querystring.unescape(str)的逆向操作了,把中文编码,常和querystring.stringify()连同使用

var obj = { name: '李浩', memo: ['helloworld', 'helloC'] };
console.log(
 qs.escape(
  qs.stringify(obj)
 )
)
// 输出 name%3D%25E6%259D%258E%25E6%25B5%25A9%26memo%3Dhelloworld%26memo%3DhelloC
//连同&和=一起编码了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
js查找父节点的简单方法
Jun 28 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
Jan 16 Javascript
解析javascript 浏览器关闭事件
Jul 08 Javascript
js常用自定义公共函数汇总
Jan 15 Javascript
js跨域请求的5中解决方式
Jul 02 Javascript
JavaScript函数中关于valueOf和toString的理解
Jun 14 Javascript
Node.js利用断言模块assert进行单元测试的方法
Sep 28 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
vue使用自定义指令实现拖拽
Jan 29 Javascript
JavaScript JSON数据处理全集(小结)
Aug 15 Javascript
JS实现点星星消除小游戏
Mar 24 Javascript
vue style width a href动态拼接问题的解决
Aug 07 Javascript
angular4自定义组件详解
Sep 28 #Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
Sep 28 #Javascript
Node.js利用断言模块assert进行单元测试的方法
Sep 28 #Javascript
详解基于vue-router的动态权限控制实现方案
Sep 28 #Javascript
node.js学习之断言assert的使用示例
Sep 28 #Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
Sep 28 #Javascript
node.js学习之事件模块Events的使用示例
Sep 28 #Javascript
You might like
用libtemplate实现静态网页生成
2006/10/09 PHP
认识并使用PHP超级全局变量
2010/01/26 PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
2010/11/01 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
Codeigniter的一些优秀特性总结
2015/01/21 PHP
php curl中gzip的压缩性能测试实例分析
2016/11/08 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
2016/05/16 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
socket.io学习教程之深入学习篇(三)
2017/04/29 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
VuePress 静态网站生成方法步骤
2019/02/14 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
React实现轮播效果
2020/08/25 Javascript
python实现括号匹配的思路详解
2018/08/23 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
使用python 打开文件并做匹配处理的实例
2019/01/02 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
python3中rank函数的用法
2019/11/27 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
优秀电子工程系毕业生求职信
2014/05/24 职场文书
公司委托书格式
2014/08/01 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
刮痧观后感
2015/06/05 职场文书
大学生暑假实习总结
2015/07/13 职场文书
开学第一天的感想
2015/08/10 职场文书