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中的变量使用说明
May 18 Javascript
jquery通过ajax加载一段文本内容的方法
Jan 15 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
Sep 06 Javascript
js实现获取div坐标的方法
Nov 16 Javascript
jQuery实现textarea自动增长宽高的方法
Dec 18 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
Jun 06 Javascript
全面了解javascript中的错误处理机制
Jul 18 Javascript
基于hover的用法实例(推荐)
Jul 04 Javascript
iview实现select tree树形下拉框的示例代码
Dec 21 Javascript
AjaxFileUpload.js实现异步上传文件功能
Apr 19 Javascript
node脚手架搭建服务器实现token验证的方法
Jan 20 Javascript
详解JS WebSocket断开原因和心跳机制
May 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
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
2011/01/12 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
PHP unlink与rmdir删除目录及目录下所有文件实例代码
2018/02/07 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
将json当数据库一样操作的javascript lib
2013/10/28 Javascript
php结合imgareaselect实现图片裁剪
2015/07/05 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
2015/12/11 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
js实现二级菜单点击显示当前内容效果
2018/04/28 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
Python脚本实现代码行数统计代码分享
2015/03/10 Python
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
python计算两个地址之间的距离方法
2018/06/09 Python
python中的数据结构比较
2019/05/13 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
python多线程同步之文件读写控制
2021/02/25 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
python 将Excel转Word的示例
2021/03/02 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
美国家居装饰和豪华家具购物网站:One Kings Lane
2018/12/24 全球购物
工地安全标语
2014/06/07 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书
Python图像处理之图像拼接
2021/04/28 Python
MySQL库表名大小写的选择
2021/06/05 MySQL