當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js url.format(urlObject)用法及代碼示例


url.format(urlObject)

曆史
版本變化
v17.0.0

現在,當主機名的 Punycode 轉換引入可能導致 URL 以不同方式重新解析的更改時,將引發 ERR_INVALID_URL 異常。

v15.13.0、v14.17.0

棄用已撤銷。狀態更改為"Legacy"。

v11.0.0

舊版 URL API 已棄用。使用 WHATWG URL API。

v7.0.0

無論slashes 選項如何,具有file: 方案的 URL 現在將始終使用正確數量的斜杠。現在也始終尊重沒有協議的虛假 slashes 選項。

v0.1.25

添加於:v0.1.25

Stability: 3 - 舊版:改用 WHATWG URL API。

參數
  • urlObject <Object> | <string> 一個 URL 對象(由 url.parse() 返回或以其他方式構造)。如果是字符串,則通過將其傳遞給 url.parse() 將其轉換為對象。

url.format() 方法返回從 urlObject 派生的格式化 URL 字符串。

const url = require('node:url');
url.format({
  protocol: 'https',
  hostname: 'example.com',
  pathname: '/some/path',
  query: {
    page: 1,
    format: 'json'
  }
});

// => 'https://example.com/some/path?page=1&format=json'

如果 urlObject 不是對象或字符串,則 url.format() 將拋出 TypeError

格式化過程操作如下:

  • 創建一個新的空字符串result
  • 如果 urlObject.protocol 是字符串,則按原樣附加到 result
  • 否則,如果 urlObject.protocol 不是 undefined 並且不是字符串,則拋出 Error
  • 對於所有字符串值urlObject.protocol,那不要結束帶有 ASCII 冒號 (:) 字符,文字字符串:將附加到result.
  • 如果以下任一條件為真,則文字字符串//將附加到result
    • urlObject.slashes 屬性為真;
    • urlObject.protocolhttphttpsftpgopherfile 開頭;
  • 如果 urlObject.auth 屬性的值為真,並且 urlObject.hosturlObject.hostname 不是 undefined ,則 urlObject.auth 的值將被強製轉換為字符串並附加到 result 後跟文字字符串@
  • 如果urlObject.host屬性是undefined然後:
    • 如果 urlObject.hostname 是字符串,則將其附加到 result
    • 否則,如果 urlObject.hostname 不是 undefined 並且不是字符串,則拋出 Error
    • 如果urlObject.port屬性值是真實的,並且urlObject.hostname不是undefined
      • 文字字符串 : 附加到 result ,並且
      • urlObject.port 的值被強製轉換為字符串並附加到 result
  • 否則,如果 urlObject.host 屬性值為真,則 urlObject.host 的值被強製轉換為字符串並附加到 result
  • 如果urlObject.pathnameproperty 是一個非空字符串的字符串:
    • 如果urlObject.pathname 不啟動帶有 ASCII 正斜杠 (/),然後是文字字符串'/'附加到result.
    • urlObject.pathname 的值附加到 result
  • 否則,如果 urlObject.pathname 不是 undefined 並且不是字符串,則拋出 Error
  • 如果 urlObject.search 屬性是 undefined 並且如果 urlObject.query 屬性是 Object ,則將文字字符串 ? 附加到 result 後跟調用 querystring 模塊的 stringify() 方法的輸出傳遞 urlObject.query 的值。
  • 否則,如果urlObject.search是一個字符串:
    • 如果值urlObject.search 不啟動帶有 ASCII 問號 (?) 字符,文字字符串?附加到result.
    • urlObject.search 的值附加到 result
  • 否則,如果 urlObject.search 不是 undefined 並且不是字符串,則拋出 Error
  • 如果urlObject.hash屬性是一個字符串:
    • 如果值urlObject.hash 不啟動使用 ASCII 哈希 (#) 字符,文字字符串#附加到result.
    • urlObject.hash 的值附加到 result
  • 否則,如果 urlObject.hash 屬性不是 undefined 並且不是字符串,則會拋出 Error
  • result 返回。

相關用法


注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 url.format(urlObject)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。