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学习总结之元素的相对定位和选择器(持续更新)
Apr 26 Javascript
javascript实现简单的进度条
Jul 02 Javascript
基于JS代码实现实时显示系统时间
Jun 16 Javascript
JS取数字小数点后两位或n位的简单方法
Oct 24 Javascript
jQuery 遍历map()方法详解
Nov 04 Javascript
根据Bootstrap Paginator改写的js分页插件
Dec 25 Javascript
vue router路由嵌套不显示问题的解决方法
Jun 17 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
Jul 21 Javascript
webpack实现热加载自动刷新的方法
Jul 30 Javascript
基于webpack.config.js 参数详解
Mar 20 Javascript
layDate日期控件使用方法详解
Nov 15 Javascript
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
Jul 25 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
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
构建简单的Webmail系统
2006/10/09 PHP
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
PHP最常用的正则表达式
2017/02/13 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
IE6下focus与blur错乱的解决方案
2011/07/31 Javascript
javascript学习笔记(十三) js闭包介绍(转)
2012/06/20 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
JavaScript模版引擎的基本实现方法浅析
2016/02/15 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
从零学习node.js之搭建http服务器(二)
2017/02/21 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
Vue实现virtual-dom的原理简析
2017/07/10 Javascript
深入理解React中何时使用箭头函数
2017/08/23 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
python学习之面向对象【入门初级篇】
2017/01/21 Python
python万年历实现代码 含运行结果
2017/05/20 Python
Python使用sorted排序的方法小结
2017/07/28 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
橄榄树药房:OLIVEDA
2019/09/01 全球购物
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
财政专业求职信范文
2014/02/19 职场文书
2014年大学生四年规划书范文
2014/04/03 职场文书
教师求职自荐书
2014/06/14 职场文书
员工自我工作评价
2015/03/06 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
故意伤害辩护词
2015/05/21 职场文书
学校财务管理制度
2015/08/04 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书