📜  Node.js URL.format(urlObject) API

📅  最后修改于: 2022-05-13 01:56:31.301000             🧑  作者: Mango

Node.js URL.format(urlObject) API

URL.format(urlObject)是 URL 类提供的内置 API,它接受一个对象或字符串并返回从该对象或字符串。

句法:

const url.format(urlObject)

如果 urlObject 不是对象或字符串,那么它将抛出TypeError
返回值:返回从 urlObject 派生的字符串。

urlObject 可以具有以下字段或键:

  • 协议
  • 斜线
  • 授权
  • 主机名
  • 主持人
  • 港口
  • 路径名
  • 搜索
  • 询问
  • 哈希

格式化过程如下:

      1. 最初,创建一个空字符串('' say result ),然后按顺序查找以下参数。

      2. urlObject.protocol:字符串

    • 如果urlObject.protocol是字符串,则将其附加到结果中,否则如果不是未定义且不是字符串,则抛出错误。
    • 如果urlObject.protocol不以 ASCII 冒号 ( : ) 结尾,则将字面量':'附加到结果中。
      3. urlObject.slashes:布尔值
    • 如果以下任一属性为真,则将字面量“//”附加到结果中:
      • urlObject.slashaes是真的。
      • urlObject.protocolhttp、https、ftp、gopher 或 file ,那么即使 slashes 为 false,slashes 也会自动为 true。
        4. urlObject.auth:字符串
      • 如果urlObject.auth不是未定义的,并且 urlObject.host 或 urlObject.hostname 也不是未定义的,那么 auth 将使用字面量“@”附加到结果中,而不管最后是否存在字面量“@”
          5. urlObject.host:字符串
        • 如果urlObject.host是字符串,则将其附加到结果中,否则如果不是未定义且不是字符串,则抛出错误。
        • 如果未定义,则考虑 urlObject.hostname。
          6. urlObject.hostname:字符串
        • 如果 urlObject.hostname 是字符串,则将其附加到结果中,否则如果不是未定义且不是字符串,则抛出错误。
        • 如果同时定义了主机和主机名,则将考虑主机。
          7. urlObject.port:(数字|字符串)
        • 如果考虑了主机名并定义了 urlObject.port ,则字面量':' 将与 urlObject.port 一起附加到结果中。
          8. urlObject.pathname:字符串
        • 如果urlObject.pathname是字符串但不是空字符串并且不以字面量“/”开头,则将字面量“/”附加到结果中。
        • urlObject.pathname 附加到结果中。
        • 否则 UrlObject.pathname 不是字符串,则抛出错误。
          9. urlObject.search:字符串
        • 如果urlObject.search是一个字符串但不是空字符串并且不是以字面量'?'开头,然后是字面量的“?”附加到结果中。
        • urlObject.search附加到结果中。
        • 如果urlObject.search不是字符串,则抛出错误。
          10. urlObject.query: 对象
        • 如果urlObject.query是一个对象,那么字面量'?'与调用querystring模块的stringify()方法并传递urlObject.query值的输出一起附加到结果中。
        • 如果同时定义了urlObject.searchurlObject.query ,则只考虑urlObject.search
          11. urlObject.hash:字符串
        • 如果urlObject.hash是一个字符串但不是空字符串并且不是以字面量'#'开头,那么字面量'#'会附加到结果中。
        • urlObject.hash附加到结果中。
        • 否则urlObject.hash不是字符串,也不是未定义的,则抛出错误。
          12. 最后返回结果

      示例 1

      /*
        node program to demonstrate the URL.format API.
      */  
          
      //importing the module 'url'
      const url = require('url');
        
      //creating and initializing urlObject
      var urlObject={
              protocol: 'https',
              hostname: 'example.com',
              port: 1800,
              pathname: 'sample/path',
              query: {
                      page: 1,
                      format: 'json'
              },
              hash: 'first'
          }
        
      //getting the derieved URL from urlObject using the url.format function
      var sampleUrl=url.format(urlObject);
        
      //Display the returned value
      console.log(sampleUrl.toString());
         
      
      Output: https://example.com:1800/sample/path?page=1&format=json#first

      示例 2

      /*
        node program to demonstrate the URL.format API.
      */  
          
      //importing the module 'url'
      const url = require('url');
        
      //creating and initializing urlObject
      var urlObject={
              protocol: 'prct',
              slashes: false,
              host: 'example.com',
              auth: 'abc',
              pathname: '/sample/path',
              search: 'something',
              hash: 'first'
          }
        
      //getting the derieved URL from urlObject using the url.format function
      var sampleUrl=url.format(urlObject);
        
      //Display the returned value
      console.log(sampleUrl.toString());
      
      Output: prct:abc@example.com/sample/path?something#first

      注意:上面的程序将使用node fileName.js命令编译和运行。

      参考:
      https://nodejs.org/api/url.html#url_url_format_urlobject