URL.format(urlObject)是URL类提供的内置API,该API接受一个对象或字符串并返回从该对象或字符串派生的格式化字符串。
用法:
const url.format(urlObject)
如果urlObject不是对象或字符串,则它将引发TypeError。返回值:返回从urlObject中删除的字符串。
urlObject可以具有以下字段或键:
- protocol
 - slashes
 - auth
 - hostname
 - host
 
- port
 - pathname
 - search
 - query
 - hash
 
格式化过程如下:
- 1.最初,一个空字符串(‘result)创建,然后按顺序查找以下参数。
 
2. urlObject.protocol:string
- 如果urlObject.protocol是一个字符串,则将其附加到结果后面;否则,如果不是undefined而不是字符串,则将引发Error。
 - 如果urlObject.protocol不以ASCII冒号(:)结尾,则将文字“:”附加到结果中。
 
- 
        3. urlObject.slashes:boolean
 
- 如果以下任一属性为true,则在结果后附加文字“ //”:
- urlObject.slashaes是真的。
 - urlObject.protocol是http,https,ftp,gopher或file,则即使斜杠为false,斜杠也将自动为true。
 
 
- 
        4. urlObject.auth:string
 
- 如果urlObject.auth未被定义,并且urlObject.host或urlObject.hostname也未被定义,则auth将以文字“ @”附加到结果后,而不考虑文字“ @”是否结尾。
 
- 
        5. urlObject.host:string
 
- 如果urlObject.host是一个字符串,则将其附加到结果后面;否则,如果不是undefined而不是字符串,则将引发Error。
 - 如果未定义,则考虑urlObject.hostname。
 
- 
        6. urlObject.hostname:string
 
- 如果urlObject.hostname是一个字符串,它将附加到结果中,否则,如果不是undefined而不是字符串,则将引发Error。
 - 如果同时定义了主机名和主机名,则将考虑主机。
 
- 
        7. urlObject.port:(number | string)
 
- 如果考虑了主机名并且定义了urlObject.port,则文字“:”将与urlObject.port一起附加到结果中。
 
- 
        8. urlObject.pathname:string
 
- 如果urlObject.pathname是一个字符串,但不是空字符串,并且不是以文字“ /”开头,则将文字“ /”附加到结果中。
 - urlObject.pathname附加到结果中。
 - 其他UrlObject.pathname不是字符串,则引发错误。
 
- 
        9. urlObject.search:string
 
- 如果urlObject.search是一个字符串,但不是空字符串,并且不是以立即数“?”开头,则将立即数“?”附加到结果中。
 - 被附加到结果中。
 - 如果urlObject.search不是字符串,则抛出错误。
 
- 
    10. urlObject.query:Object
 
- 如果urlObject.query是一个Object,则将文字“?”与通过传递urlObject.query的值调用查询字符串模块的stringify()方法的输出一起添加到结果中。
 - 如果同时定义了urlObject.search和urlObject.query,则仅考虑urlObject.search。
 
- 
        11. urlObject.hash:string
 
- 如果urlObject.hash是一个字符串但不是空字符串,并且不是以文字“#”开头,则将文字“#”附加到结果中。
 - urlObject.hash被附加到结果中。
 - 否则urlObject.hash不是字符串,并且不是未定义的,则引发错误。
 
- 12.最后,result返回。
 
例子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
注意:上面的程序将通过使用节点fileName.js命令进行编译和运行。
参考:
https://nodejs.org/api/url.html#url_url_format_urlobject
相关用法
- Node.js URL.pathToFileURL用法及代码示例
 - Node.js URL.fileURLToPath用法及代码示例
 - Node.js URLSearchParams.has()用法及代码示例
 - Node.js URL.href用法及代码示例
 - Node.js URL.password用法及代码示例
 
注:本文由纯净天空筛选整理自Vinod Tahelyani大神的英文原创作品 Node | URL.format(urlObject) API。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
