欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Node.js学习之查询字符串解析querystring详解

程序员文章站 2022-04-09 22:14:58
前言 查询字符串模块提供了解析和格式化工具url查询字符串的api,本文将详细介绍关于node.js查询字符串解析querystring的相关内容,分享出来供大家参考学习...

前言

查询字符串模块提供了解析和格式化工具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
//连同&和=一起编码了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。