在進行web開發(fā)的前端get或post請求發(fā)送參數(shù)的時候,在后端提取參數(shù)進行數(shù)據(jù)庫查詢;在Node.js 的V6.10.3版本的文檔提供了querstring模塊進行參數(shù)的解析與提?。辉敿毑榭匆幌聁uerstring的參數(shù)API。
1.querystring(查詢字符串)
- querstring模塊提供了使用的工具,用于URL的請求參數(shù)的解析與提取,它需要引入querstring模塊包。
const querystring=require('querystring');
2.querystring模塊的API:
- querystring.escape(str):
- str (string):需要進行解析的URL查詢字符串。
- querystring.escape()方法對給定url進行百分號編碼。
- querystring.escape()是提供給querystring.stringify()使用的,通常不被直接使用,而是通過給querystring.escape()賦值一個函數(shù)來達到重寫編碼的實現(xiàn)。
- querystring.parse(str[,sep,eq[,options]]]):
- str(String):要解析的URL查詢字符串。
- sep(String):用于界定查詢字符串中的鍵值對的子字符串。默認為'&'。
- eq(string):用于界定查詢字符串的鍵值的子字符串。默認為‘=’。
- options(object):
- decodeURIComponent(Function):當解碼查詢字符串中百分號編碼的字符時使用的函數(shù)。默認為querystring.unescape().
- maxKeys(number):指定要解析的鍵的最大數(shù)量。默認為1000.指定為0則移除鍵數(shù)的限制。
- 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函數(shù)已經(jīng)存在
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不安全的字符轉換成查詢字符串的百分號編碼時使用的函數(shù)。默認為querystring.escape()。
- querystring.stringify()方法通過遍歷對象自有屬性,從一個給定的obj產(chǎn)生一個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函數(shù)已經(jīng)存在 querystring.stringify({'中文',foo:'bar'},null,null,{ encodeURIComponet:gbkEncodeURIComponent }); - querystring.unescape(str):
- str(String)
- querstring.unescape()方法對給定的str上的URL百分號編碼的字符進行解碼。
- querystring.unescape()方法是提供querystring.parse()使用的,之所以對外開放,是為了在需要的時候可以通過給querystring.unescape賦值一個函數(shù)來重寫解碼實現(xiàn)。
- querystring.unescape()方法默認使用JavaScript內置decodeURIComponent()方法來解碼。