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 相关文章推荐
window.showModalDialog使用手册
Jan 11 Javascript
基于JQuery框架的AJAX实例代码
Nov 03 Javascript
Node.js模块加载详解
Aug 16 Javascript
javascript制作sql转换为stringBuffer的小工具
Apr 03 Javascript
JS实现自动变化的导航菜单效果代码
Sep 09 Javascript
使用JQuery实现智能表单验证功能
Mar 08 Javascript
Vue.js开发环境快速搭建教程
Mar 17 Javascript
tab栏切换原理
Mar 22 Javascript
JavaScript面向对象精要(上部)
Sep 12 Javascript
vue axios数据请求get、post方法及实例详解
Sep 11 Javascript
解决vue keep-alive 数据更新的问题
Sep 21 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
Nov 13 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 Ajax中文乱码问题解决方法
2009/02/27 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
javascript 闭包
2011/09/15 Javascript
js前台判断开始时间是否小于结束时间
2012/02/23 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
js闭包所用的场合以及优缺点分析
2015/06/22 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
vue $set 给数据赋值的实例
2019/11/09 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
python 删除列表里所有空格项的方法总结
2018/04/18 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
2020/02/17 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
Django返回HTML文件的实现方法
2020/09/17 Python
HTML5之SVG 2D入门5—颜色的表示及定义方式
2013/01/30 HTML / CSS
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
东方红海科技面试题软件测试方面
2012/02/08 面试题
家居饰品店创业计划书
2014/01/31 职场文书
教师业务培训方案
2014/05/01 职场文书
分公司经理任命书
2014/06/05 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
应聘教师自荐信
2015/03/26 职场文书
《弟子规》读后感:知廉耻、明是非、懂荣辱、辨善恶
2019/12/03 职场文书
详解Python类和对象内容
2021/06/22 Python