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 base64编码实现代码
Dec 02 Javascript
jQuery获取浏览器中的分辨率实现代码
Apr 23 Javascript
js跑步算法的实现代码
Dec 04 Javascript
jQuery 滑动方法slideDown向下滑动元素
Jan 16 Javascript
js和jquery中循环的退出和继续学习记录
Sep 06 Javascript
JQuery菜单效果的两个实例讲解(3)
Sep 17 Javascript
javascript常用经典算法实例详解
Nov 25 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
Jun 14 Javascript
关于iframe跨域POST提交的方法示例
Jan 15 Javascript
Vue中的transition封装组件的实现方法
Aug 13 Javascript
vue router 传参获取不到的解决方式
Nov 13 Javascript
js实现文字头像的生成代码
Mar 07 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
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
php 正则表达式小结
2009/08/31 PHP
php网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
在PHP中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
csdn 批量接受好友邀请
2009/02/19 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
给html超链接设置事件不使用href来完成跳
2014/04/20 Javascript
JS解析XML实例分析
2015/01/30 Javascript
javascript弹出带文字信息的提示框效果
2016/07/19 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
vue中v-for循环给标签属性赋值的方法
2018/10/18 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
解决VueCil代理本地proxytable无效报错404的问题
2020/11/07 Javascript
PyQt 线程类 QThread使用详解
2017/07/16 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
pytorch 预训练层的使用方法
2019/08/20 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
商务助理岗位职责
2013/11/13 职场文书
社区活动邀请函范文
2014/01/29 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
网络书店创业计划书
2014/02/07 职场文书
开展读书活动总结
2014/06/30 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
2014年体育工作总结
2014/11/24 职场文书
推广普通话主题班会
2015/08/17 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL
MySQL学习之基础命令实操总结
2022/03/19 MySQL