NodeJs -- 3 (url和querystring 模塊)

url模塊

1. url.parse(urlString[,parseQueryString[,slashesDenoteHost]])

url.parse(urlString[,parseQueryString[,slashesDenoteHost]]) 解析一個 URL 字符串并返回一個 URL 對象。

  • urlString 字符串 -- 要解析的URL字符串
  • parseQueryString 布爾值 -- 默認為false,為true時,返回的對象中,query的屬性為一個對象,可省略
  • slashesDenoteHost 布爾值 -- 解析主機處理,一般情況下使用不到
var url = require("url");
var myurl = "http://www.nodejs.org/some/url/?with=query&param=that#about";
parsedUrl=url.parse(myurl);
// 結果
Url {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'www.nodejs.org',
  port: null,
  hostname: 'www.nodejs.org',
  hash: '#about',
  search: '?with=query&param=that',
  query: 'with=query&param=that',
  pathname: '/some/url/',
  path: '/some/url/?with=query&param=that',
  href: 'http://www.nodejs.org/some/url/?with=query&param=that#about'
}
var url = require("url");
var myurl = "http://www.nodejs.org/some/url/?with=query&param=that#about";
parsedUrl=url.parse(myurl, true); // 第二個參數(shù)為true
// 結果
Url {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'www.nodejs.org',
  port: null,
  hostname: 'www.nodejs.org',
  hash: '#about',
  search: '?with=query&param=that',
  query: { with: 'query', param: 'that' },  // 第二個參數(shù)為true
  pathname: '/some/url/',
  path: '/some/url/?with=query&param=that',
  href: 'http://www.nodejs.org/some/url/?with=query&param=that#about'
}

返回的對象說明:
? protocol :請求協(xié)議
? host :URL主機名已全部轉換成小寫,包括端口信息
? auth :URL中身份驗證信息部分
? hostname :主機的主機名部分,已轉換成小寫
? port :主機的端口號部分
? pathname :URL的路徑部分,位于主機名之后請求查詢之前
? search :URL的 “查詢字符串” 部分,包括開頭的問號
? path :pathname和search連在一起
? query :查詢字符串中的參數(shù)部分(問號后面部分字符串),或者使用querystring.parse()解析后返回的對象
? hash :URL的 “#” 后面部分(包括 # 符號)

2. url.format(urlObject)
  • urlObject 對象|字符串 -- 一個URL對象(就像url.parse()返回的)。如果是一個字符串,則通過url.parse()轉換為一個對象。
    url.format(urlObject)的作用和url.parse(urlString[,parseQueryString[,slashesDenoteHost]]) 相反
3. url.resolve(from, to)
  • from 字符串 -- 解析時相對的基本URL或者說當前路徑
  • to 字符串 -- 要解析的 URL或者說想要去的往的路徑
const url = require('url');
url.resolve('/one/two/three', 'four');         // '/one/two/four'
url.resolve('http://example.com/', '/one');    // 'http://example.com/one'
url.resolve('http://example.com/one', '/two'); // 'http://example.com/two'

注意:只能重定向路徑名,不能重定向域名


querystring模塊

querystring 模塊提供序列化與反序列化,轉義與反轉義兩組功能

  1. querystring.stringify(obj, [step], [eq])
    將一個對象序列化為一個查詢的字符串,使用&和=分別為字符串中的分隔符和賦值符。
    ? # 如果轉換的對象中存在中文,會對中文進行unicode編碼
    ? # step 修改分隔符
    ? # eq 修改賦值符

2.querystring.parse(str, [sep], [eq], [options])
根據(jù)“&”和“=”將字符串進行分割,反序列化為JSON對象,而options包含的maxKeys默認設置為1000,如果將其設置為0則表示沒這個限制。
? # step 用來指明分隔符是用了哪個字符,根據(jù)分隔符來進行反序列化
? # eq 用來指明賦值符是哪個字符

3.querystring.escape,querystring.unescape
編碼和解碼


QueryString模塊和Url模塊之間的關系

                        url.parse(string).query
                                           |
           url.parse(string).pathname      |
                       |                   |
                       |                   |
                     ------ -------------------
http://localhost:8888/start?foo=bar&hello=world
                                ---       -----
                                 |          |
                                 |          |
              querystring(string)["foo"]    |
                                            |
                         querystring(string)["hello"]
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 概要 64學時 3.5學分 章節(jié)安排 電子商務網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,877評論 0 3
  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測試 ...
    KeKeMars閱讀 6,610評論 0 6
  • 我的朋友和我說 單純的這么去看文檔是沒有效果的 你需要先有需求 再去看文檔 這樣才能真正的一步步學會Node 我覺...
    阿瑟李閱讀 269評論 0 1
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,679評論 1 32
  • 今天開始好好寫文,好好畫畫。哪怕成長的慢一點,我也不想再原地踏步做自己不喜歡的事情。我承認我今天受了刺激。我想討厭...
    王為己閱讀 153評論 2 2

友情鏈接更多精彩內容