当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。