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 相关文章推荐
jQuery $.get 的妙用 访问本地文本文件
Jul 12 Javascript
jquery事件重复绑定的快速解决方法
Jan 03 Javascript
jQuery 设置 CSS 属性示例介绍
Jan 16 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
May 25 Javascript
微信小程序实现人脸识别
May 25 Javascript
Angular如何在应用初始化时运行代码详解
Jun 11 Javascript
vue中使用element-ui进行表单验证的实例代码
Jun 22 Javascript
Vue中的基础过渡动画及实现原理解析
Dec 04 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
Apr 26 Javascript
js与jquery获取input输入框中的值实例讲解
Feb 27 jQuery
tracking.js实现前端人脸识别功能
Apr 16 Javascript
JS实现简单贪吃蛇小游戏
Oct 28 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
php中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
jquery 查找新建元素代码
2010/07/06 Javascript
JavaScript函数详解
2014/11/17 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
JS HTML5拖拽上传图片预览
2016/07/18 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
PyQt5打开文件对话框QFileDialog实例代码
2018/02/07 Python
python生成tensorflow输入输出的图像格式的方法
2018/02/12 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
2018/05/21 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
国际书籍零售商:Wordery
2017/11/01 全球购物
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
The Kooples美国官方网站:为情侣提供的法国当代时尚品牌
2019/01/03 全球购物
酒吧员工的岗位职责
2013/11/26 职场文书
施工班组长岗位职责
2014/01/05 职场文书
专业求职信撰写要诀
2014/02/18 职场文书
学校招生宣传广告词
2014/03/19 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
2014统计局民主生活会对照检查材料思想汇报
2014/10/02 职场文书
大学生团员个人总结
2015/02/14 职场文书
初中英语教师个人工作总结2015
2015/07/21 职场文书
初中地理教学反思
2016/02/19 职场文书
Docker安装MySql8并远程访问的实现
2022/07/07 Servers