在进行web开发的前端get或post请求发送参数的时候,在后端提取参数进行数据库查询;在Node.js 的V6.10.3版本的文档提供了querstring模块进行参数的解析与提取;详细查看一下querstring的参数API。
1.querystring(查询字符串)
- querstring模块提供了使用的工具,用于URL的请求参数的解析与提取,它需要引入querstring模块包。
const querystring=require('querystring');
2.querystring模块的API:
- querystring.escape(str):
- str (string):需要进行解析的URL查询字符串。
- querystring.escape()方法对给定url进行百分号编码。
- querystring.escape()是提供给querystring.stringify()使用的,通常不被直接使用,而是通过给querystring.escape()赋值一个函数来达到重写编码的实现。
- querystring.parse(str[,sep,eq[,options]]]):
- str(String):要解析的URL查询字符串。
- sep(String):用于界定查询字符串中的键值对的子字符串。默认为'&'。
- eq(string):用于界定查询字符串的键值的子字符串。默认为‘=’。
- options(object):
- decodeURIComponent(Function):当解码查询字符串中百分号编码的字符时使用的函数。默认为querystring.unescape().
- maxKeys(number):指定要解析的键的最大数量。默认为1000.指定为0则移除键数的限制。
- querystring.parse()方法能把一个URL查询字符串(str)解析成一个键值对的集合。
- 例子,查询字符串'foo=bar&abc=xyz&abc=123'被解析成:
foo:'bar', abc:['xyz','123']
- 注意,querystring.parse()方法返回的对象不继承自JavaScript的object。这意味着典型的Object方法如obj.toString()、obj.hasOwnProperty()等没有被定义且无法使用。
- 默认情况下,查询字符串中的百分号编码的字符会被认为使用了UTF-8编码的。如果使用的是另外一种字符编码,则decodeURIComponent选项需要被指定,如以下例子:
//假设gbkDecodeURIComponent函数已经存在
querystring.parse('w=%D6%D0%CE%C4&foo=bar',null,null,{
decodeURIComponent:gbkDecodeURIComponent
});
- querystring.stringify(obj[,sep[,eq[,options]]]):
- obj(obj):要序列化成一个URL查询字符串的对象。
- sep(string):用于界定查询字符串中的键值对的子字符串。默认为‘&’。
- eq(string):用于界定查询字符串中的键与值的字符串。默认为“=”。
- options:
- encodeURIComponent(Function):当把对URL不安全的字符转换成查询字符串的百分号编码时使用的函数。默认为querystring.escape()。
- querystring.stringify()方法通过遍历对象自有属性,从一个给定的obj产生一个URL查询字符串。
querystring.stringify({foo:'bar',baz:['qux','quux'],corge:''}); //返回'foo=bar&baz=qux&baz=quux&corge=' querystring.stringify({ foo:'bar', baz:'qux' },';',':'); //返回‘foo:bar&baz:qux’
- 默认情况下,查询字符串中需要百分号编码会作为UTF-8被编码。如果需要的是另一种编码,则encodeURIcomponent选项需要被指定,如下例子:
//假设gbkEncodeURIComponent函数已经存在 querystring.stringify({'中文',foo:'bar'},null,null,{ encodeURIComponet:gbkEncodeURIComponent });
- querystring.unescape(str):
- str(String)
- querstring.unescape()方法对给定的str上的URL百分号编码的字符进行解码。
- querystring.unescape()方法是提供querystring.parse()使用的,之所以对外开放,是为了在需要的时候可以通过给querystring.unescape赋值一个函数来重写解码实现。
- querystring.unescape()方法默认使用JavaScript内置decodeURIComponent()方法来解码。