Node.js URL

2022-02-26 10:32 更新
穩(wěn)定性: 3 - 穩(wěn)定

Node.js的URL模塊提供了用于分析和解析URL的實用程序。可以調(diào)用require('url')來訪問它:

const url = require('url');

解析URL對象有以下內(nèi)容,依賴于他們是否在URL字符串里存在。任何不在URL字符串里的部分,都不會出現(xiàn)在解析對象里。例子如下:

'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'

  • href:準(zhǔn)備解析的完整的URL,包含協(xié)議和主機(小寫)。

    例子:'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'

  • protocol: 請求協(xié)議,小寫。

    例子:'http:'

  • slashes: 協(xié)議要求的斜杠(冒號后)

    例子: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: pathnamesearch連在一起

    例子:'/p/a/t/h?query=string'

  • query: 查詢字符串中得參數(shù)部分,或者使用querystring.parse()解析后返回的對象。

    例子:'query=string'或者{'query':'string'}

  • hash: URL的“#”后面部分(包括 # 符號)

    例子:'#hash'

URL模塊提供了以下方法:

url.parse(urlStr[, parseQueryString][, slashesDenoteHost])

輸入URL字符串,返回一個對象。

第二個參數(shù)為true時,使用querystring來解析查詢字符串。如果為truequery屬性將會一直賦值為對象,并且search屬性將會一直是字符串(可能為空)。默認(rèn)為false

第三個參數(shù)為true,把//foo/bar當(dāng)做{ host: 'foo', pathname: '/bar' } ,而不是{ pathname: '//foo/bar' }。默認(rèn)為false。

url.format(urlObj)

輸入一個解析過的URL對象,返回格式化過的字符串。

格式化的工作流程:

  • href會被忽略
  • protocol無論是否有末尾的 : (冒號),會同樣的處理
    • http,https,ftpgopher,file協(xié)議會被添加后綴://
    • mailtoxmpp,aim,sftp,foo等協(xié)議添加后綴:
  • slashes如果協(xié)議需要://,設(shè)置為true。
    • 僅需對之前列出的沒有斜杠的協(xié)議,比如議mongodb://localhost:8000/
  • auth如果出現(xiàn)將會使用.
  • hostname僅在缺少host時使用
  • port僅在缺少host時使用
  • host用來替換hostnameport
  • pathname無論結(jié)尾是否有“/”將會同樣處理
  • search將會替 query屬性
    • 無論前面是否有“/”將會同樣處理
  • query (對象;參見querystring) 如果沒有search,將會使用
  • hash無論前面是否有#,都會同樣處理

url.resolve(from, to)

給一個基礎(chǔ)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'


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號