• Node.js Video Tutorials

NodeJS - url.format() 方法



NodeJS url.format() 方法返回一個格式化的 URL 字串,該字串派生自 urlObject。

urlObject 可以具有以下屬性

  • protocol: 指定 URL 的協議方案(例如:https:)。

  • slashes: 一個布林值,指定協議之後是否跟隨著兩個 ASCII 正斜槓 (//)。

  • auth: 指定 URL 的身份驗證段(例如:username:password)。

  • username: 指定身份驗證段中的使用者名稱。

  • password: 指定身份驗證段中的密碼。

  • host: 指定包含埠號的主機名。

  • hostname: 指定不包含埠號的主機名。

  • port: 指示埠號。

  • pathname: 指示 URL 路徑。

  • query: 包含解析的查詢字串,除非 parsing 設定為 false。

  • hash: 指定 URL 的片段部分,包括 “#”。

  • href: 指定完整的 URL。

  • origin: 指定 URL 的來源。

語法

以下是 NodeJS url.format() 方法的語法

url.format(urlObject)

引數

  • urlObject: 指定一個 URL 物件(由 parse() 方法返回或以其他方式構造)。

返回值

此方法接受一個已解析的 URL 並返回一個格式化的 URL 字串。

NodeJS url.format() 方法的格式化過程如下

  • 首先,建立一個新的空字串(考慮為“result”)。

  • urlObject.protocol

    • 如果 urlObject.protocol 是字串,則將其附加到 result。否則,如果 urlObject.protocol 不是字串或不是未定義,則會丟擲錯誤。

    • 如果 urlObject.protocol 不以 ASCII 冒號 (:) 字元結尾,則將字面量字串 (:) 附加到 result。

  • urlObject.slashes

    • 這指定一個布林值。

    • 如果以下任一條件為真,則將字面量字串 (//) 附加到 result。

    • 如果 urlObject.slashes 為 true。

    • 如果 urlObject.protocol 為 http、https、ftp、gopher 或 file。

  • urlObject.auth

    • 如果 urlObject.auth 不是未定義,並且 urlObject.host 或 urlObject.hostname 不是未定義,則將 urlObject.auth 的值強制轉換為字串並附加到 result,後跟字面量字串“@”。

  • urlObject.host

    • 如果 urlObject.host 是字串,則將其附加到 result。否則,如果未定義且不是字串,則會丟擲 TypeError。

    • 如果 urlObject.host 未定義,則考慮 urlObject.hostname。

  • urlObject.hostname

    • 如果 urlObject.hostname 是字串,則將其附加到 result。否則,如果未定義且不是字串,則會丟擲 TypeError。

  • urlObject.port

    • 如果考慮 hostname 並且指定了 urlObject.port,則將字面量字串 ‘:’ 附加到 result,後跟 urlObject.port。

  • urlObject.pathname

    • 如果 urlObject.pathname 是非空字串且開頭沒有 ASCII 正斜槓 (/),則將字面量字串“/”附加到 result。

    • urlObject.hash 的值將附加到 result。

    • 如果 urlObject.hash 屬性不是字串或不是未定義,則會丟擲 TypeError。

  • urlObject.search

    • 如果 urlObject.search 是字串且不是以 ASCII 問號 (?) 字元開頭,則將字面量字串 ‘?’ 附加到 result。

    • urlObject.search 值將附加到 result。

    • 如果 urlObject.search 未定義且不是字串,則會丟擲 TypeError。

  • urlObject.query

    • 如果 urlObject.query 是物件,則將字面量字串 ‘?’ 附加到 result,以及 querystring 模組的 stringify() 方法,傳遞 urlObject.query 的值。

    • 如果同時指定了 urlObject.search 和 urlObject,則只考慮 urlObject.search 並將其附加到 result。

  • urlObject.hash

    • 如果 urlObject.hash 是字串

      • 即使 urlObject.hash 的值開頭沒有 ASCII 井號 (#) 字元,也會將字面量字串 “#” 附加到 result。

      • urlObject.hash 的值將附加到 result。

    • 否則,如果 urlObject.hash 屬性不是字串或不是未定義,則會丟擲 TypeError。

  • urlObject.href – 此屬性將被忽略。

  • 最後,format() 方法將形成一個格式化的 URL (result)。

示例

在下面的示例中,我們使用 NodeJS parse() 方法解析 URL 字串。然後,我們將返回的 urlObject 傳遞給 NodeJS format() 方法。

const url = require('url');
const address = 'https://user:pass@site.com:2000/pa/th?q=val#hash';
let urlObject = url.parse(address, true);
console.log(url.format(urlObject));

輸出

正如我們在輸出中看到的,NodeJS format() 方法返回一個格式化的 URL 字串,該字串派生自 urlObject。

https://user:pass@site.com:2000/pa/th?q=val#hash

示例

在下面的示例中,我們構造一個 URL 物件而不是解析。

const url = require('url');
console.log(url.format({
  protocol: 'https:',
  auth: 'user:pass',
  host: 'site.com:2000',
  port: '2000',
  hostname: 'site.com',
  hash: '#hash',
  search: '?q=val',
  query: { page:'one', format: 'json'},
  pathname: '/pa/th',
  path: '/pa/th?q=val',
}))

輸出

正如我們在下面的輸出中看到的,format() 方法檢索到一個格式化的字串,該字串是從 urlObject 獲得的。

https://user:pass@site.com:2000/pa/th?q=val#hash
nodejs_url_module.htm
廣告
© . All rights reserved.