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.protocol是http、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.search和urlObject.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