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 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
Apr 07 Javascript
javascript 事件处理程序介绍
Jun 27 Javascript
jQuery中的pushStack实现原理和应用实例
Feb 03 Javascript
JS实现从连接中获取youtube的key实例
Jul 02 Javascript
使用JQuery实现智能表单验证功能
Mar 08 Javascript
AngularJS基础 ng-switch 指令简单示例
Aug 03 Javascript
Vue.js每天必学之方法与事件处理器
Sep 06 Javascript
使用BootStrap进行轮播图的制作
Jan 06 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
Aug 09 Javascript
vue微信分享到朋友圈 vue微信发送给好友
Nov 28 Javascript
微信小程序实现简易table表格
Jun 19 Javascript
jQuery中实现text()的方法
Apr 04 jQuery
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学习笔记之二 php入门知识
2011/01/12 PHP
PHP字典树(Trie树)定义与实现方法示例
2017/10/09 PHP
php实现微信支付之退款功能
2018/05/30 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
Javascript 复制数组实现代码
2009/11/26 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
javascript常用的方法分享
2015/07/01 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
JavaScript中捕获与冒泡详解及实例
2017/02/03 Javascript
Js apply方法详解
2017/02/16 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
详解使用React全家桶搭建一个后台管理系统
2017/11/04 Javascript
vue+iview+less 实现换肤功能
2018/08/17 Javascript
详解如何使用koa实现socket.io官网的例子
2018/11/04 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
Python递归遍历列表及输出的实现方法
2015/05/19 Python
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
财务管理专业毕业生求职信范文
2013/09/21 职场文书
数学专业毕业生自荐信
2013/11/10 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
给校长的建议书100字
2014/05/16 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android