Node中的URL總結

Node中的URL總結

在這裏插入圖片描述

上圖是node官網中的一張圖,在node中,url模塊提供了兩套API來處理URL:一個是舊版本遺留的 API,一個是實現了 WHATWG標準的新 API。在圖中,下方的是WHATWG的URL對象的屬性,上方是舊的URL對象屬性。

一、URL(Universal Resource Locator,統一資源定位符)的組成

URL主要包含:協議、主機、端口號、路徑、參數、查詢等
URL由三部分組成:協議類型,主機名和路徑及文件名

protocol(協議類型):

  1. 表示訪問資源和服務的協議
  2. 常見的協議類型有:http,ftp,mailto,file等
    • http:超文本傳輸協議,是因特網上應用最爲廣泛的網絡傳輸協議。格式爲http://
    • ftp:文件傳輸協議。格式爲ftp://
    • file:訪問本地計算機上的資源。格式爲file:///
    • mailto:個用於發送郵件的URL協議。格式爲mailto:

hostname – 主機名

port – 端口號

  1. 類似於房間號

pathname – 文件路徑

  1. 由零或多個“/”符號隔開的字符串,一般用來表示主機上的一個目錄或文件地址。

search – 查詢部分(?query)

  1. 可選,用於給動態網頁(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技術製作的網頁)傳遞參數,可有多個參數,用“&”符號隔開,每個參數的名和值用“=”符號隔開。

hash

二、Node中常用的URL操作命令

  1. url.parse()方法
url.parse('https://user:[email protected]:8080/p/a/t/h?query=string#hash')
// 得到的結果如下
Url {
  protocol: 'https:', // 協議
  slashes: true, // (協議的“:”號後是否有“/”)(slashes意思是斜槓)
  auth: 'user:pass', // // 用戶名,密碼
  host: 'sub.host.com:8080',// host主機名
  port: '8080', // 端口號
  hostname: 'sub.host.com', // 不帶端口號的主機名
  hash: '#hash', // 哈希值(URL屬性中在井號“#”後面的分段)
  search: '?query=string', // 查詢字符串(URL屬性中跟在問號後面的部分包括?號)
  query: 'query=string', // 請求參數
  pathname: '/p/a/t/h', // 路徑名
  path: '/p/a/t/h?query=string', // 帶查詢的路徑名
  href:
   'https://user:[email protected]:8080/p/a/t/h?query=string#hash' // 原字符串本身
}
/**
 * 加true與不加true區別
 *   query解析出來的類型不同,加true時爲object
*/
url.parse('https://user:[email protected]:8080/p/a/t/h?query=string#hash', true)
// 得到的結果如下
Url {
  protocol: 'https:',
  slashes: true,     
  auth: 'user:pass', 
  host: 'sub.host.com:8080',
  port: '8080',
  hostname: 'sub.host.com',
  hash: '#hash',
  search: '?query=string',
  query: [Object: null prototype] { query: 'string' },
  pathname: '/p/a/t/h',
  path: '/p/a/t/h?query=string',
  href:
   'https://user:[email protected]:8080/p/a/t/h?query=string#hash' }
  1. url.host
  2. url.hash
  3. url.hostname
    • 獲取及設置 URL 的主機名部分
  4. url.href
  5. url.origin
    • 獲取只讀的序列化的 URL的origin
  6. url.password
    • 獲取及設置 URL 的密碼部分。
  7. url.pathname
    • 獲取及設置 URL 的路徑部分。
  8. url.port
    • 獲取及設置 URL 的端口部分。
  9. url.protocol – 獲取及設置 URL 的協議部分。
  10. url.toString()
  • 在 URL 對象上調用 toString() 方法將返回序列化的 URL。 返回值與 url.href 和 url.toJSON() 的相同。
  • 由於需要符合標準,此方法不允許用戶自定義URL的序列化過程。如果需要更大靈活性,require(‘url’).format()可能更合適。
  1. url.toJSon()
  • 在 URL 對象上調用toJSON()方法將返回序列化的URL。返回值與url.href和url.toString()的相同
  1. url.search
  • 獲取及設置 URL 的序列化查詢部分。
const myURL = new URL('https://example.org/abc?123');
console.log(myURL.search);
// 打印 ?123

myURL.search = 'abc=xyz';
console.log(myURL.href);
// 打印 https://example.org/abc?abc=xyz
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章