Node.js核心模塊querystring

在進行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()方法來解碼。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容