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 相关文章推荐
详解JavaScript ES6中的Generator
Jul 28 Javascript
Bootstrap 布局组件(全)
Jul 18 Javascript
原生JS实现圣旨卷轴展开效果
Mar 06 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
May 30 Javascript
前端把html表格生成为excel表格的实例
Sep 19 Javascript
vue自定义过滤器创建和使用方法详解
Nov 06 Javascript
thinkjs 文件上传功能实例代码
Nov 08 Javascript
JavaScript中利用Array filter() 方法压缩稀疏数组
Feb 24 Javascript
Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
Sep 05 Javascript
JS实现图片切换特效
Dec 23 Javascript
解决removeEventListener 无法清除监听的问题
Oct 30 Javascript
如何在 Vue 中使用 JSX
Feb 14 Vue.js
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
在Windows版的PHP中使用ADO
2006/10/09 PHP
PDO::exec讲解
2019/01/28 PHP
RSA实现JS前端加密与PHP后端解密功能示例
2019/08/05 PHP
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
js类型检查实现代码
2010/10/29 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
jQuery中用on绑定事件时需注意的事项
2017/03/19 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
Python利用pandas计算多个CSV文件数据值的实例
2018/04/19 Python
使用python进行拆分大文件的方法
2018/12/10 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
Python Django 封装分页成通用的模块详解
2019/08/21 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
简述python&pytorch 随机种子的实现
2020/10/07 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
企业为何需要商业计划书
2013/12/26 职场文书
复核员上岗演讲稿
2014/01/05 职场文书
《画风》教学反思
2014/04/16 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
故意伤害辩护词
2015/05/21 职场文书
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
Python实现聚类K-means算法详解
2022/07/15 Python
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技