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 相关文章推荐
动态改变textbox的宽高的js
Oct 26 Javascript
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
Sep 26 Javascript
jQuery事件绑定.on()简要概述及应用
Feb 07 Javascript
innerText和textContent对比及使用介绍
Feb 27 Javascript
jQuery关于导航条背景切换效果实现示例
Sep 04 Javascript
JS仿京东移动端手指拨动切换轮播图效果
Apr 10 Javascript
Vue2.0如何发布项目实战
Jul 27 Javascript
VueJS组件之间通过props交互及验证的方式
Sep 04 Javascript
javascript 开发之网页兼容各种浏览器
Sep 28 Javascript
vue中的event bus非父子组件通信解析
Oct 27 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
Oct 27 Javascript
学习 Vue.js 遇到的那些坑
Feb 02 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
php获取字段名示例分享
2014/03/03 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
2019/04/10 PHP
封装的原生javascript弹出层代码
2010/09/24 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
jquery $.getJSON()跨域请求
2011/12/21 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
2016/06/16 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
JavaScript编写棋盘覆盖代码详解
2017/08/28 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
vue实现购物车的监听
2020/04/20 Javascript
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
python中的插值 scipy-interp的实现代码
2018/07/23 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
Django框架验证码用法实例分析
2019/05/10 Python
如何使用python操作vmware
2019/07/27 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
Python list运算操作代码实例解析
2020/01/20 Python
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
如何提高SQL Server的安全性
2016/07/25 面试题
高三自我鉴定范文
2013/10/19 职场文书
装饰资料员岗位职责
2013/12/30 职场文书
2014新课程改革心得体会
2014/03/10 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
毕业生政审意见范文
2015/06/04 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers