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 相关文章推荐
XML+XSL 与 HTML 两种方案的结合
Apr 22 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
May 20 Javascript
javascript 星级评分效果(手写)
Dec 24 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
Mar 05 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
Jun 06 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
Apr 29 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
Feb 09 Javascript
Angular.js跨controller实现参数传递的两种方法
Feb 20 Javascript
解决vue-router 二级导航默认选中某一选项的问题
Nov 01 Javascript
JavaScript中this的学习笔记及用法整理
Feb 17 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
Aug 03 Javascript
Vue实现小购物车功能
Dec 21 Vue.js
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 xml常用函数的集合(比较详细)
2013/06/06 PHP
PHP队列用法实例
2014/11/05 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
Position属性之relative用法
2015/12/14 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
python抓取最新博客内容并生成Rss
2015/05/17 Python
python编写简单爬虫资料汇总
2016/03/22 Python
Python排序算法实例代码
2017/08/10 Python
TensorFlow设置日志级别的几种方式小结
2020/02/04 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
python中的对数log函数表示及用法
2020/12/09 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
css3绘制百度的小度熊
2018/10/29 HTML / CSS
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
英语师范专业毕业生自荐信
2013/09/21 职场文书
求职信内容考虑哪几点
2013/10/05 职场文书
水电维修专业推荐信
2014/09/06 职场文书
小学科学教学计划
2015/01/21 职场文书
建议书范文
2015/02/05 职场文书
开学第一天的感想
2015/08/10 职场文书
初中英语教学反思范文
2016/02/15 职场文书