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 相关文章推荐
js预载入和JavaScript Image()对象使用介绍
Aug 28 Javascript
javascript表单验证使用示例(javascript验证邮箱)
Jan 07 Javascript
jQuery中:first选择器用法实例
Dec 30 Javascript
jquery复选框多选赋值给文本框的方法
Jan 27 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
Mar 29 Javascript
Javascript随机标签云代码实例
Jun 21 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
Nov 24 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
Oct 22 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
Feb 02 Javascript
js实现移动端tab切换时下划线滑动效果
Sep 08 Javascript
详解vue页面首次加载缓慢原因及解决方案
Nov 06 Javascript
Vue实现boradcast和dispatch的示例
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实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
2014/05/10 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
有趣的javascript数组定义方法
2010/09/10 Javascript
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
jquery 页面滚动到指定DIV实现代码
2013/09/25 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
深入理解JS DOM事件机制
2016/08/06 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
2017/09/23 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
在类Unix系统上开始Python3编程入门
2015/08/20 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
python破解zip加密文件的方法
2018/05/31 Python
Python利用字典破解WIFI密码的方法
2019/02/27 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
python单例模式的多种实现方法
2019/07/26 Python
HTML5 贪吃蛇游戏实现思路及源代码
2013/09/03 HTML / CSS
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
生产部管理制度
2014/01/31 职场文书
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
合作意向协议书范本
2014/03/31 职场文书
个人租房协议书范本
2014/09/30 职场文书
2015党建工作简报
2015/07/21 职场文书
微软Win11有哪些隐藏功能? windows11多个功能汇总
2021/11/21 数码科技
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android