博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
序列号和反序列化==》nodejs之querystring模块(尼玛,太强大,好用耶)
阅读量:4614 次
发布时间:2019-06-09

本文共 2450 字,大约阅读时间需要 8 分钟。

前置知识与应用环境:

由于前端传给后台的数据分为3种:

1:json  2:string("name='mia'&age=25")==>此时可用querystring.stringify将对象转化为序列化的字符串    3:表单形式提交(contentType:form-data)

 

这里主要记下querystring模块的使用方法。

querystring从字面上的意思就是查询字符串,一般是对http请求所带的数据进行解析。querystring模块只提供4个方法,在我看来,这4个方法是相对应的。

这4个方法分别是querystring.parse和querystring.stringify,querystring.escape和querystring.unescape。

首先,使用querystring模块之前,需要require进来:

1 const querystring = require("querystring");

其次,就可以使用模块下的方法了:

querystring.parse(str,separator,eq,options)

parse这个方法是将一个字符串反序列化为一个对象。

参数:str指需要反序列化的字符串;

   separator(可省)指用于分割str这个字符串的字符或字符串,默认值为"&";

   eq(可省)指用于划分键和值的字符或字符串,默认值为"=";

   options(可省)该参数是一个对象,里面可设置maxKeys和decodeURIComponent这两个属性:

      maxKeys:传入一个number类型,指定解析键值对的最大值,默认值为1000,如果设置为0时,则取消解析的数量限制;

      decodeURIComponent:传入一个function,用于对含有%的字符串进行解码,默认值为querystring.unescape。在官方API的例子中,使用gbkDecodeURIComponent这个方法会报错,显示gbkDecodeURIComponent is no defined,这是因为在使用这个gbkDecodeURIComponent这个方法之前需要先进行定义。在API中也写了Assuming gbkDecodeURIComponent function already exists...这句话的意思是”假设这个gbkDecodeURIComponent方法已经存在”。

例子1,querystring.parse

1 querystring.parse("name=whitemu&sex=man&sex=women"); 2 /* 3 return: 4 { name: 'whitemu', sex: [ 'man', 'women' ] } 5 */ 6 querystring.parse("name=whitemu#sex=man#sex=women","#",null,{maxKeys:2}); 7 /* 8 return: 9 { name: 'whitemu', sex: 'man' }10 */

querystring.stringify(obj,separator,eq,options)

stringify这个方法是将一个对象序列化成一个字符串,与querystring.parse相对。

参数:obj指需要序列化的对象

   separator(可省)用于连接键值对的字符或字符串,默认值为"&";

   eq(可省)用于连接键和值的字符或字符串,默认值为"=";

   options(可省)传入一个对象,该对象可设置encodeURIComponent这个属性:

      encodeURIComponent:值的类型为function,可以将一个不安全的url字符串转换成百分比的形式,默认值为querystring.escape()。

例子2,querystring.stringify

querystring.stringify({name: 'whitemu', sex: [ 'man', 'women' ] });/*return:'name=whitemu&sex=man&sex=women'*/querystring.stringify({name: 'whitemu', sex: [ 'man', 'women' ] },"*","$");/*return:'name$whitemu*sex$man*sex$women'*/

querystring.escape(str)

escape可使传入的字符串进行编码

例子3,querystring.escape

querystring.escape("name=慕白");/*return:'name%3D%E6%85%95%E7%99%BD'*/

querystring.unescape(str)

unescape方法可将含有%的字符串进行解码

例子4,querystring.unescape

querystring.unescape('name%3D%E6%85%95%E7%99%BD');/*return:'name=慕白'*/

总结:

  querystring这个模块相对的还是比较简单,仅有4个方法。

  querystring.stringify序列化;

  querystring.parse反序列化;

  querystring.escape编码;

  querystring.unescape解码;

  当然啦,鄙人对于该模块的研究还是不深,仅仅对该模块的API做了简单的翻译和加上自己的一些理解,若有错误希望能够指正,一起探讨。。。

转载于:https://www.cnblogs.com/miaSlady/p/9979726.html

你可能感兴趣的文章
[YTU]_1032( 统计出其中英文字母、数字、空格和其他字符的个数)
查看>>
第2周项目2程序的多文件组织
查看>>
Java初始化顺序
查看>>
蓝桥--未名湖边的烦恼 (递推)
查看>>
2018-05-22 CSS如何居中
查看>>
时空数据库场景
查看>>
分布式设计 —— 容错与主备
查看>>
explanatory variable(independent vs dependent)、design matrix
查看>>
PS 图像调整算法——阈值
查看>>
介词的使用、介词的搭配
查看>>
函数使用四:采购发票MIRO BAPI_INCOMINGINVOICE_CREATE
查看>>
asp.net html 单击按钮弹出下拉框效果
查看>>
This bison version is not supported for regeneration of the Zend/PHP parsers
查看>>
二分法,冒泡排序
查看>>
替换禁用语(指定关键字)的过滤器(StopWordsFilter)
查看>>
数据库备份和还原
查看>>
算法导论学习笔记(一):插入排序
查看>>
robotframework日志中文乱码,编译提示‘utf-8’ codecxxxx。
查看>>
Warning: date(): It is not safe to rely on the system's timezone settings.
查看>>
C++默认参数(转)
查看>>