url.format(urlObject)
稳定性: 3 - 传统做法:请改用 WHATWG URL API。
urlObject<Object> | <string> 一个 URL 对象(由url.parse()返回或通过其他方式构建)。如果是字符串,则通过将其传递给url.parse()转换为对象。
url.format() 方法返回一个根据 urlObject 生成的格式化 URL 字符串。
【The url.format() method returns a formatted URL string derived from
urlObject.】
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。
【If urlObject is not an object or a string, url.format() will throw a
TypeError.】
格式化过程如下:
【The formatting process operates as follows:】
- 创建了一个新的空字符串
result。 - 如果
urlObject.protocol是一个字符串,它会原样追加到result中。 - 否则,如果
urlObject.protocol不是undefined且不是字符串,将抛出Error。 - 对于所有
urlObject.protocol的字符串值,如果 不以 ASCII 冒号(:)结尾,则字面字符串:将被附加到result。 - 如果以下任一条件为真,则字面字符串
//将被附加到result:urlObject.slashes属性为 true;urlObject.protocol以http、https、ftp、gopher或file开头;
- 如果
urlObject.auth属性的值为真值,并且urlObject.host或urlObject.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.pathname属性是一个非空字符串:- 如果
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被返回。