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 fullscreen全屏实现代码
Apr 09 Javascript
js 蒙版进度条(结合图片)
Mar 10 Javascript
jquery显示loading图片直到网页加载完成的方法
Jun 25 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
May 13 Javascript
jQuery实现联动下拉列表查询框
Jan 04 Javascript
Vue中建立全局引用或者全局命令的方法
Aug 21 Javascript
构建Vue大型应用的10个最佳实践(小结)
Nov 07 Javascript
vue vant中picker组件的使用
Nov 03 Javascript
vue实现图书管理系统
Dec 29 Vue.js
学习 Vue.js 遇到的那些坑
Feb 02 Vue.js
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
May 30 Javascript
vue实现省市区联动 element-china-area-data插件
Apr 22 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
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
收藏的PHP常用函数 推荐收藏保存
2010/02/21 PHP
PHP OPCode缓存 APC详细介绍
2010/10/12 PHP
用PHP实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
PHP cdata 处理(详细介绍)
2013/07/05 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
2016/12/02 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
Laravel框架实现的上传图片到七牛功能详解
2019/09/06 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
HTML Dom与Css控制方法
2010/10/25 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
2017/01/05 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
python使用Tkinter显示网络图片的方法
2015/04/24 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
Pandas Shift函数的基础入门学习笔记
2018/11/16 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
python3实现名片管理系统(控制台版)
2020/11/29 Python
python编程的核心知识点总结
2021/02/08 Python
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
Delphi软件工程师试题
2013/01/29 面试题
电子工程求职信
2014/07/17 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
个人房屋租赁合同(标准范本)
2019/09/16 职场文书