Node.js中的URL

Node.js中的URL

什麼是URL

URL是Uniform Location Resource的縮寫,翻譯爲「統一資源定位符」,也就是描述資源位置的固定表示方法。被URL描述的資源能夠位於互聯網上,也能夠位於本地。html

URL的組成結構

基本URL包含模式(或者成爲協議),服務器名(或IP地址),路徑和文件名。node

第一部分:協議

經過協議,能夠獲取打開URL的方式,最多見的協議是http,從網上查到的協議以下:安全

http 超文本傳輸協議服務器

https 用安全套接字層傳送的超文本傳輸協議函數

ftp 文件傳輸協議測試

mailto 電子郵件地址ui

ldap 輕型目錄訪問協議搜索 url

file 本地文件spa

news Usenet新聞組翻譯

gopher Gopher協議

telnet Telnet協議

第二部分:地址與路徑

文件所在的服務器名稱+端口號/用戶名密碼+文件的路徑+文件自己的名稱

當URL沒有給出對應的文件名是,通常訪問默認的文件名,例如index.html或default.html

Nodejs中的URL

URL對象的成員

URL對象中的成員以下:

  • href 被傳入的未經解析的URL地址,包含協議(protocol)、主機名(host)等,都表示爲小寫
  • protocol 請求的協議名稱,表示爲小寫,如‘http:’
  • slashes 冒號後的斜線,值爲true或false
  • host 主機及端口的所有信息,例如‘host.com:8080’
  • auth 身份驗證信息,例如‘user:pass’
  • hostname 主機名,例如‘host.com’
  • port 端口號,例如‘8000’
  • pathname 路徑名,在主機名以後,查詢語句以前的地址部分,包含‘/’,例如‘/p/a/t/h’
  • search URL地址的查詢部分,包括開頭的問號,例如‘?query=string’
  • path 路徑名與查詢的串聯,沒有通過解碼,例如‘/p/a/t/h?query=string’
  • query 查詢部分的參數,或者解析後的查詢字符串,例如‘query=string’或者{'query':'string'}
  • hash URL地址中‘#’字符後的片斷
URL對象中的函數
  • url.format(urlObj) 將一個URL對象轉化成格式化的URL地址

  • url.parse(urlStr[, parseQueryString][, slashesDenoteHost]) 將一個URL地址解析爲一個URL對象,第二個參數傳入布爾值,表示是否解析查詢字符串,(第三個參數傳入布爾值,表示pathname是否去除host,這個官方文檔說明沒有徹底看明白,後面測試一下)

  • url.resolve(from, to) 將from指向的URL轉換到to,例如

·

 
 
 
 
1
2
3
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'

經過代碼測試

測試環境:node.js 4.2.4

經測試,第二和第三個參數無效。

代碼爲URLTest.js

 
 
 
 
1
2
var url = require('url');var addr = 'http://www.baidu.com';
console.log(url.parse(addr));

運行結果爲:

 
 
 
 
1
2
3
4
D:\MyHTML\MyJS\URLTest>node URLTest.jsUrl {  protocol: 'http:',  slashes: true,
  auth: null,  host: 'www.baidu.com',  port: null,  hostname: 'www.baidu.com',
  hash: null,  search: null,  query: null,  pathname: '/',  path: '/',
  href: 'http://www.baidu.com/' }
相關文章
相關標籤/搜索