穩定性: 3 - 穩定
這個模塊包含分析和解析 URL 的工具。調用 require('url')
來訪問模塊。
解析 URL 對象有以下內容,依賴于他們是否在 URL 字符串里存在。任何不在 URL 字符串里的部分,都不會出現在解析對象里。例子如下:
'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
href
: 準備解析的完整的 URL,包含協議和主機(小寫)。
例子: 'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'
protocol
: 請求協議, 小寫.
例子: 'http:'
slashes
: 協議要求的斜杠(冒號后)
例子: true 或 false
host
: 完整的 URL 小寫 主機部分,包含端口信息。
例子: 'host.com:8080'
auth
: url 中的驗證信息。
例子: 'user:pass'
hostname
: 域名中的小寫主機名
例子: 'host.com'
port
: 主機的端口號
例子: '8080'
pathname
: URL 中的路徑部分,在主機名后,查詢字符前,包含第一個斜杠。
例子: '/p/a/t/h'
search
: URL 中得查詢字符串,包含開頭的問號
例子: '?query=string'
path
: pathname
和 search
連在一起
例子: '/p/a/t/h?query=string'
query
: 查詢字符串中得參數部分,或者使用 querystring.parse() 解析后返回的對象。
例子: 'query=string'
or {'query':'string'}
hash
: URL 的 “#” 后面部分(包括 # 符號)
例子: '#hash'
URL 模塊提供了以下方法:
輸入 URL 字符串,返回一個對象。
第二個參數為 true
時,使用 querystring
來解析查詢字符串。如果為 true
,query
屬性將會一直賦值為對象,并且 search
屬性將會一直是字符串(可能為空)。默認為 false
。
第三個參數為true
,把 //foo/bar
當做{ host: 'foo', pathname: '/bar' }
,而不是{ pathname: '//foo/bar' }
。默認為 false
。
輸入一個解析過的 URL 對象,返回格式化過的字符串。
格式化的工作流程:
href
會被忽略protocol
無論是否有末尾的 : (冒號),會同樣的處理http
, https
, ftp
, gopher
, file
協議會被添加后綴://
mailto
, xmpp
, aim
, sftp
, foo
, 等協議添加后綴:
slashes
如果協議需要 ://
,設置為 truemongodb://localhost:8000/
auth
如果出現將會使用.hostname
僅在缺少 host
時使用port
僅在缺少 host
時使用host
用來替換 hostname
和 port
pathname
無論結尾是否有 / 將會同樣處理search
將會替代 query屬性query
(對象; 參見 querystring
) 如果沒有 search,將會使用hash
無論前面是否有#,都會同樣處理給一個基礎 URL, href 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'