Spec-Zone.ru › Deno 2

url

Модуль node:url предоставляет утилиты для разрешения URL-адресов и их разбора. К нему можно получить доступ с помощью:

import url from 'node:url';

Использование в Deno

import * as mod from "node:url";

class URL

Использование в Deno

import { URL } from "node:url";

Совместимый с браузерами класс URL, реализованный в соответствии со стандартом WHATWG URL. Примеры разобранных URL можно найти непосредственно в Стандарте. Класс URL также доступен в глобальном объекте.

В соответствии с соглашениями браузеров все свойства объектов URL реализованы как геттеры и сеттеры в прототипе класса, а не как свойства данных самого объекта. Поэтому, в отличие от legacy urlObject, использование ключевого слова delete для любых свойств объектов URL (например, delete myURL.protocol, delete myURL.pathname и т. д.) не имеет эффекта, но всё равно возвращает true.

Конструкторы

URL(
input: string | { toString: () => string; },
base?: string | URL,
)
new

Свойства

hash: string

Возвращает и задаёт фрагмент URL.

const myURL = new URL('https://example.org/foo#bar');
console.log(myURL.hash);
// Prints #bar

myURL.hash = 'baz';
console.log(myURL.href);
// Prints https://example.org/foo#baz

Недопустимые символы URL, включённые в значение, присвоенное свойству hash, percent-encoded. Набор символов, кодируемых в процентном представлении, может несколько отличаться от того, который используют методы parse и format.

host: string

Возвращает и задаёт часть URL, содержащую хост.

const myURL = new URL('https://example.org:81/foo');
console.log(myURL.host);
// Prints example.org:81

myURL.host = 'example.com:82';
console.log(myURL.href);
// Prints https://example.com:82/foo

Недопустимые значения хоста, присвоенные свойству host, игнорируются.

hostname: string

Возвращает и задаёт имя хоста в URL. Главное различие между url.host и url.hostname заключается в том, что url.hostname не включает порт.

const myURL = new URL('https://example.org:81/foo');
console.log(myURL.hostname);
// Prints example.org

// Setting the hostname does not change the port
myURL.hostname = 'example.com';
console.log(myURL.href);
// Prints https://example.com:81/foo

// Use myURL.host to change the hostname and port
myURL.host = 'example.org:82';
console.log(myURL.href);
// Prints https://example.org:82/foo

Недопустимые значения имени хоста, присвоенные свойству hostname, игнорируются.

href: string

Возвращает и задаёт сериализованный URL.

const myURL = new URL('https://example.org/foo');
console.log(myURL.href);
// Prints https://example.org/foo

myURL.href = 'https://example.com/bar';
console.log(myURL.href);
// Prints https://example.com/bar

Получение значения свойства href равносильно вызову toString.

Присвоение этому свойству нового значения равносильно созданию нового объекта URL с помощью new URL(value). Все свойства объекта URL будут изменены.

Если значение, присвоенное свойству href, не является допустимым URL, будет выброшено исключение TypeError.

origin: string
только для чтения

Возвращает сериализованное происхождение URL; свойство доступно только для чтения.

const myURL = new URL('https://example.org/foo/bar?baz');
console.log(myURL.origin);
// Prints https://example.org
const idnURL = new URL('https://測試');
console.log(idnURL.origin);
// Prints https://xn--g6w251d

console.log(idnURL.hostname);
// Prints xn--g6w251d
password: string

Возвращает и задаёт часть URL, содержащую пароль.

const myURL = new URL('https://abc:xyz@example.com');
console.log(myURL.password);
// Prints xyz

myURL.password = '123';
console.log(myURL.href);
// Prints https://abc:123@example.com/

Недопустимые символы URL, включённые в значение, присвоенное свойству password, percent-encoded. Набор символов, кодируемых в процентном представлении, может несколько отличаться от того, который используют методы parse и format.

pathname: string

Возвращает и задаёт путь URL.

const myURL = new URL('https://example.org/abc/xyz?123');
console.log(myURL.pathname);
// Prints /abc/xyz

myURL.pathname = '/abcdef';
console.log(myURL.href);
// Prints https://example.org/abcdef?123

Недопустимые символы URL, включённые в значение, присвоенное свойству pathname, percent-encoded. Набор символов, кодируемых в процентном представлении, может несколько отличаться от того, который используют методы parse и format.

port: string

Возвращает и задаёт часть URL, содержащую порт.

Значение порта может быть числом или строкой, содержащей число в диапазоне от 0 до 65535 включительно. Если задать значение, равное порту по умолчанию для объектов URL с указанным protocol, значение port станет пустой строкой ('').

Значение порта может быть пустой строкой; в этом случае порт зависит от протокола/схемы:

При присвоении значения порту это значение сначала будет преобразовано в строку с помощью .toString().

Если эта строка недопустима, но начинается с числа, начальное число присваивается port. Если число выходит за указанный выше диапазон, оно игнорируется.

const myURL = new URL('https://example.org:8888');
console.log(myURL.port);
// Prints 8888

// Default ports are automatically transformed to the empty string
// (HTTPS protocol's default port is 443)
myURL.port = '443';
console.log(myURL.port);
// Prints the empty string
console.log(myURL.href);
// Prints https://example.org/

myURL.port = 1234;
console.log(myURL.port);
// Prints 1234
console.log(myURL.href);
// Prints https://example.org:1234/

// Completely invalid port strings are ignored
myURL.port = 'abcd';
console.log(myURL.port);
// Prints 1234

// Leading numbers are treated as a port number
myURL.port = '5678abcd';
console.log(myURL.port);
// Prints 5678

// Non-integers are truncated
myURL.port = 1234.5678;
console.log(myURL.port);
// Prints 1234

// Out-of-range numbers which are not represented in scientific notation
// will be ignored.
myURL.port = 1e10; // 10000000000, will be range-checked as described below
console.log(myURL.port);
// Prints 1234

Числа с десятичной точкой, например числа с плавающей точкой или числа в научной нотации, также подпадают под это правило. Начальные числа до десятичной точки будут заданы в качестве порта URL, если они допустимы:

myURL.port = 4.567e21;
console.log(myURL.port);
// Prints 4 (because it is the leading number in the string '4.567e21')
protocol: string

Возвращает и задаёт часть URL, содержащую протокол.

const myURL = new URL('https://example.org');
console.log(myURL.protocol);
// Prints https:

myURL.protocol = 'ftp';
console.log(myURL.href);
// Prints ftp://example.org/

Недопустимые значения протокола URL, присвоенные свойству protocol, игнорируются.

search: string

Возвращает и задаёт сериализованную часть URL, содержащую строку запроса.

const myURL = new URL('https://example.org/abc?123');
console.log(myURL.search);
// Prints ?123

myURL.search = 'abc=xyz';
console.log(myURL.href);
// Prints https://example.org/abc?abc=xyz

Любые недопустимые символы URL в значении, присвоенном свойству search, будут percent-encoded. Набор символов, кодируемых в процентном представлении, может несколько отличаться от того, который используют методы parse и format.

searchParams: URLSearchParams
только для чтения

Возвращает объект URLSearchParams, представляющий параметры запроса URL. Это свойство доступно только для чтения, однако предоставленный им объект URLSearchParams можно использовать для изменения экземпляра URL. Чтобы заменить все параметры запроса URL, используйте сеттер search. Подробности см. в документации URLSearchParams.

Будьте осторожны при использовании .searchParams для изменения URL, поскольку, согласно спецификации WHATWG, объект URLSearchParams использует другие правила определения символов, кодируемых в процентном представлении. Например, объект URL не кодирует в процентном представлении символ ASCII «тильда» (~), тогда как URLSearchParams всегда его кодирует:

const myURL = new URL('https://example.org/abc?foo=~bar');

console.log(myURL.search);  // prints ?foo=~bar

// Modify the URL via searchParams...
myURL.searchParams.sort();

console.log(myURL.search);  // prints ?foo=%7Ebar
username: string

Возвращает и задаёт часть URL, содержащую имя пользователя.

const myURL = new URL('https://abc:xyz@example.com');
console.log(myURL.username);
// Prints abc

myURL.username = '123';
console.log(myURL.href);
// Prints https://123:xyz@example.com/

Любые недопустимые символы URL в значении, присвоенном свойству username, будут percent-encoded. Набор символов, кодируемых в процентном представлении, может несколько отличаться от того, который используют методы parse и format.

Методы

toJSON(): string

Метод toJSON() объекта URL возвращает сериализованный URL. Возвращаемое значение эквивалентно значениям href и toString.

Этот метод вызывается автоматически при сериализации объекта URL с помощью JSON.stringify().

const myURLs = [
  new URL('https://www.example.com'),
  new URL('https://test.example.org'),
];
console.log(JSON.stringify(myURLs));
// Prints ["https://www.example.com/","https://test.example.org/"]
toString(): string

Метод toString() объекта URL возвращает сериализованный URL. Возвращаемое значение эквивалентно значениям href и toJSON.

Статические методы

canParse(
input: string,
base?: string,
): boolean

Проверяет, можно ли разобрать input относительно base как URL.

const isValid = URL.canParse('/foo', 'https://example.org/'); // true

const isNotValid = URL.canParse('/foo'); // false
createObjectURL(blob: NodeBlob): string

Создаёт строку URL 'blob:nodedata:...', представляющую указанный объект Blob и позволяющую позднее получить Blob.

import {
  Blob,
  resolveObjectURL,
} from 'node:buffer';

const blob = new Blob(['hello']);
const id = URL.createObjectURL(blob);

// later...

const otherBlob = resolveObjectURL(id);
console.log(otherBlob.size);

Данные, хранящиеся в зарегистрированном Blob, будут оставаться в памяти, пока не будет вызван URL.revokeObjectURL() для их удаления.

Объекты Blob регистрируются в текущем потоке. При использовании рабочих потоков объекты Blob, зарегистрированные в одном рабочем потоке, будут недоступны другим рабочим потокам и основному потоку.

parse(
input: string,
base?: string,
): URL | null

Разбирает строку как URL. Если указан base, он будет использоваться в качестве базового URL для разрешения не абсолютных URL input. Возвращает null, если input недопустим.

revokeObjectURL(id: string): void

Удаляет сохранённый Blob, идентифицируемый указанным идентификатором. Попытка отозвать незарегистрированный идентификатор не приведёт к ошибке.

interface URL

extends _URL

переменная URL

URL class is a global reference for import { URL } from 'url' https://nodejs.org/api/url.html#the-whatwg-url-api

Тип

globalThis extends { onmessage: any; URL: infer T; } ? T : _URL

класс URLSearchParams

implements Iterable<[string, string]>

Использование в Deno

import { URLSearchParams } from "node:url";

API URLSearchParams предоставляет доступ для чтения и записи параметров запроса URL. Класс URLSearchParams также можно использовать отдельно с одним из четырёх следующих конструкторов. Класс URLSearchParams также доступен в глобальном объекте.

Интерфейс WHATWG URLSearchParams и модуль querystring имеют схожее назначение, однако назначение модуля querystring более широкое, поскольку он позволяет настраивать символы-разделители (&#x26; и =). С другой стороны, этот API предназначен исключительно для строк запроса URL.

const myURL = new URL('https://example.org/?abc=123');
console.log(myURL.searchParams.get('abc'));
// Prints 123

myURL.searchParams.append('abc', 'xyz');
console.log(myURL.href);
// Prints https://example.org/?abc=123&#x26;abc=xyz

myURL.searchParams.delete('abc');
myURL.searchParams.set('a', 'b');
console.log(myURL.href);
// Prints https://example.org/?a=b

const newSearchParams = new URLSearchParams(myURL.searchParams);
// The above is equivalent to
// const newSearchParams = new URLSearchParams(myURL.search);

newSearchParams.append('a', 'c');
console.log(myURL.href);
// Prints https://example.org/?a=b
console.log(newSearchParams.toString());
// Prints a=b&#x26;a=c

// newSearchParams.toString() is implicitly called
myURL.search = newSearchParams;
console.log(myURL.href);
// Prints https://example.org/?a=b&#x26;a=c
newSearchParams.delete('a');
console.log(myURL.href);
// Prints https://example.org/?a=b&#x26;a=c

Конструкторы

URLSearchParams(init?:
URLSearchParams
| string
| Record<string, string | readonly string[]>
| Iterable<[string, string]>
| ReadonlyArray<[string, string]>
)
новый

Свойства

size: number
только для чтения

Общее количество записей параметров.

Методы

[Symbol.iterator](): URLSearchParamsIterator<[string, string]>
append(
name: string,
value: string,
): void

Добавляет новую пару «имя — значение» в строку запроса.

delete(
name: string,
value?: string,
): void

Если указан value, удаляет все пары «имя — значение», в которых имя равно name, а значение равно value.

Если value не указан, удаляет все пары «имя — значение» с именем name.

entries(): URLSearchParamsIterator<[string, string]>

Возвращает итератор ES6 Iterator для каждой пары «имя — значение» в запросе. Каждый элемент итератора — это объект JavaScript Array. Первый элемент Array — это name, второй элемент Array — это value.

Псевдоним для urlSearchParams[@@iterator]().

forEach<TThis = this>(
fn: (
this: TThis,
value: string,
name: string,
searchParams: URLSearchParams,
) => void
,
thisArg?: TThis,
): void

Перебирает каждую пару «имя — значение» в запросе и вызывает указанную функцию.

const myURL = new URL('https://example.org/?a=b&#x26;c=d');
myURL.searchParams.forEach((value, name, searchParams) => {
  console.log(name, value, myURL.searchParams === searchParams);
});
// Prints:
//   a b true
//   c d true
get(name: string): string | null

Возвращает значение первой пары «имя — значение», имя которой равно name. Если таких пар нет, возвращается null.

getAll(name: string): string[]

Возвращает значения всех пар «имя — значение», имя которых равно name. Если таких пар нет, возвращается пустой массив.

has(
name: string,
value?: string,
): boolean

Проверяет, содержит ли объект URLSearchParams пару(ы) «ключ — значение» на основе name и необязательного аргумента value.

Если указан value, возвращает true, когда существует пара «имя — значение» с такими же name и value.

Если value не указан, возвращает true, если существует хотя бы одна пара «имя — значение» с именем name.

keys(): URLSearchParamsIterator<string>

Возвращает итератор ES6 Iterator по именам каждой пары «имя — значение».

const params = new URLSearchParams('foo=bar&#x26;foo=baz');
for (const name of params.keys()) {
  console.log(name);
}
// Prints:
//   foo
//   foo
set(
name: string,
value: string,
): void

Устанавливает в объекте URLSearchParams значение value, связанное с name. Если уже существуют пары «имя — значение» с именем name, значение первой такой пары заменяется на value, а остальные удаляются. Если таких пар нет, пара «имя — значение» добавляется в строку запроса.

const params = new URLSearchParams();
params.append('foo', 'bar');
params.append('foo', 'baz');
params.append('abc', 'def');
console.log(params.toString());
// Prints foo=bar&#x26;foo=baz&#x26;abc=def

params.set('foo', 'def');
params.set('xyz', 'opq');
console.log(params.toString());
// Prints foo=def&#x26;abc=def&#x26;xyz=opq
sort(): void

Сортирует все существующие пары «имя — значение» на месте по именам. Сортировка выполняется с помощью устойчивого алгоритма сортировки, поэтому относительный порядок пар «имя — значение» с одинаковым именем сохраняется.

Этот метод можно использовать, в частности, для увеличения числа попаданий в кэш.

const params = new URLSearchParams('query[]=abc&#x26;type=search&#x26;query[]=123');
params.sort();
console.log(params.toString());
// Prints query%5B%5D=abc&#x26;query%5B%5D=123&#x26;type=search
toString(): string

Возвращает параметры поиска в виде строки, выполняя процентное кодирование символов при необходимости.

values(): URLSearchParamsIterator<string>

Возвращает итератор ES6 Iterator по значениям каждой пары «имя — значение».

интерфейс URLSearchParams

extends _URLSearchParams

переменная URLSearchParams

URLSearchParams class is a global reference for import { URLSearchParams } from 'node:url' https://nodejs.org/api/url.html#class-urlsearchparams

Тип

globalThis extends { onmessage: any; URLSearchParams: infer T; } ? T : _URLSearchParams

функция domainToASCII

Использование в Deno

import { domainToASCII } from "node:url";
domainToASCII(domain: string): string

Возвращает ASCII-представление domain в формате Punycode. Если domain — недопустимый домен, возвращается пустая строка.

Выполняет операцию, обратную domainToUnicode.

import url from 'node:url';

console.log(url.domainToASCII('español.com'));
// Prints xn--espaol-zwa.com
console.log(url.domainToASCII('中文.com'));
// Prints xn--fiq228c.com
console.log(url.domainToASCII('xn--iñvalid.com'));
// Prints an empty string

Параметры

domain: string

Тип возвращаемого значения

string

функция domainToUnicode

Использование в Deno

import { domainToUnicode } from "node:url";
domainToUnicode(domain: string): string

Возвращает представление domain в кодировке Unicode. Если domain — недопустимый домен, возвращается пустая строка.

Выполняет операцию, обратную domainToASCII.

import url from 'node:url';

console.log(url.domainToUnicode('xn--espaol-zwa.com'));
// Prints español.com
console.log(url.domainToUnicode('xn--fiq228c.com'));
// Prints 中文.com
console.log(url.domainToUnicode('xn--iñvalid.com'));
// Prints an empty string

Параметры

domain: string

Тип возвращаемого значения

string

функция fileURLToPath

Использование в Deno

import { fileURLToPath } from "node:url";
fileURLToPath(
url: string | URL,
options?: FileUrlToPathOptions,
): string

Эта функция обеспечивает корректное декодирование символов с процентным кодированием, а также гарантирует получение допустимой абсолютной строки пути, совместимой с разными платформами.

import { fileURLToPath } from 'node:url';

const __filename = fileURLToPath(import.meta.url);

new URL('file:///C:/path/').pathname;      // Incorrect: /C:/path/
fileURLToPath('file:///C:/path/');         // Correct:   C:\path\ (Windows)

new URL('file://nas/foo.txt').pathname;    // Incorrect: /foo.txt
fileURLToPath('file://nas/foo.txt');       // Correct:   \\nas\foo.txt (Windows)

new URL('file:///你好.txt').pathname;      // Incorrect: /%E4%BD%A0%E5%A5%BD.txt
fileURLToPath('file:///你好.txt');         // Correct:   /你好.txt (POSIX)

new URL('file:///hello world').pathname;   // Incorrect: /hello%20world
fileURLToPath('file:///hello world');      // Correct:   /hello world (POSIX)

Параметры

url: string | URL

Строка URL файла или объект URL, который необходимо преобразовать в путь.

options: FileUrlToPathOptions
необязательный

Возвращаемый тип

string

Полностью разрешённый путь к файлу Node.js, специфичный для платформы.


функция format

Использование в Deno

import { format } from "node:url";

Перегрузка 1

format(
urlObject: URL,
options?: URLFormatOptions,
): string

Метод url.format() возвращает отформатированную строку URL, полученную из urlObject.

import url from 'node:url';
url.format({
  protocol: 'https',
  hostname: 'example.com',
  pathname: '/some/path',
  query: {
    page: 1,
    format: 'json',
  },
});

// => 'https://example.com/some/path?page=1&#x26;format=json'

Если urlObject не является объектом или строкой, url.format() выбросит TypeError.

Форматирование выполняется следующим образом:

  • Создаётся новая пустая строка 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 добавляется литеральная строка ?, за которой следует результат вызова метода stringify() модуля querystring со значением 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.

Параметры

urlObject: URL

Объект URL (возвращаемый url.parse() или созданный другим способом). Если передана строка, она преобразуется в объект путём передачи в url.parse().

options: URLFormatOptions
необязательный

Возвращаемый тип

string

Перегрузка 2

format(urlObject: UrlObject | string): string

Метод url.format() возвращает отформатированную строку URL, полученную из urlObject.

import url from 'node:url';
url.format({
  protocol: 'https',
  hostname: 'example.com',
  pathname: '/some/path',
  query: {
    page: 1,
    format: 'json',
  },
});

// => 'https://example.com/some/path?page=1&#x26;format=json'

Если urlObject не является объектом или строкой, url.format() выбросит TypeError.

Форматирование выполняется следующим образом:

  • Создаётся новая пустая строка 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 добавляется литеральная строка ?, за которой следует результат вызова метода stringify() модуля querystring со значением 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.

Параметры

urlObject: UrlObject | string

Объект URL (возвращаемый url.parse() или созданный другим способом). Если передана строка, она преобразуется в объект путём передачи в url.parse().

Возвращаемый тип

string

функция parse

Использование в Deno

import { parse } from "node:url";

Перегрузка 1

parse(urlString: string): UrlWithStringQuery
Устарело

Метод url.parse() принимает строку URL, анализирует ее и возвращает объект URL.

Выбрасывается исключение TypeError, если urlString не является строкой.

Выбрасывается исключение URIError, если свойство auth присутствует, но его не удается декодировать.

url.parse() использует снисходительный нестандартный алгоритм анализа строк URL. Он подвержен таким проблемам безопасности, как подмена имени хоста и некорректная обработка имен пользователей и паролей. Не используйте его с недоверенными данными. CVE для уязвимостей url.parse() не присваиваются. Вместо этого используйте API WHATWG URL.

Параметры

urlString: string

Строка URL для анализа.

Тип возвращаемого значения

UrlWithStringQuery

Перегрузка 2

parse(
urlString: string,
parseQueryString: false | undefined,
slashesDenoteHost?: boolean,
): UrlWithStringQuery

Параметры

urlString: string
parseQueryString: false | undefined
slashesDenoteHost: boolean
необязательный

Тип возвращаемого значения

UrlWithStringQuery

Перегрузка 3

parse(
urlString: string,
parseQueryString: true,
slashesDenoteHost?: boolean,
): UrlWithParsedQuery

Параметры

urlString: string
parseQueryString: true
slashesDenoteHost: boolean
необязательный

Тип возвращаемого значения

UrlWithParsedQuery

Перегрузка 4

parse(
urlString: string,
parseQueryString: boolean,
slashesDenoteHost?: boolean,
): Url

Параметры

urlString: string
parseQueryString: boolean
slashesDenoteHost: boolean
необязательный

Тип возвращаемого значения

Url

функция pathToFileURL

Использование в Deno

import { pathToFileURL } from "node:url";
pathToFileURL(
path: string,
options?: PathToFileUrlOptions,
): URL

Эта функция гарантирует, что path разрешается в абсолютный путь, а управляющие символы URL корректно кодируются при преобразовании в URL файла.

import { pathToFileURL } from 'node:url';

new URL('/foo#1', 'file:');           // Incorrect: file:///foo#1
pathToFileURL('/foo#1');              // Correct:   file:///foo%231 (POSIX)

new URL('/some/path%.c', 'file:');    // Incorrect: file:///some/path%.c
pathToFileURL('/some/path%.c');       // Correct:   file:///some/path%25.c (POSIX)

Параметры

path: string

Путь для преобразования в URL файла.

options: PathToFileUrlOptions
необязательный

Тип возвращаемого значения

URL

Объект URL файла.


функция resolve

Использование в Deno

import { resolve } from "node:url";
resolve(
from: string,
to: string,
): string

Метод url.resolve() разрешает целевой URL относительно базового URL аналогично тому, как веб-браузер разрешает адрес в теге привязки.

import url from 'node:url';
url.resolve('/one/two/three', 'four');         // '/one/two/four'
url.resolve('http://example.com/', '/one');    // 'http://example.com/one'
url.resolve('http://example.com/one', '/two'); // 'http://example.com/two'

Чтобы получить тот же результат с помощью API URL WHATWG:

function resolve(from, to) {
  const resolvedUrl = new URL(to, new URL(from, 'resolve://'));
  if (resolvedUrl.protocol === 'resolve:') {
    // `from` is a relative URL.
    const { pathname, search, hash } = resolvedUrl;
    return pathname + search + hash;
  }
  return resolvedUrl.toString();
}

resolve('/one/two/three', 'four');         // '/one/two/four'
resolve('http://example.com/', '/one');    // 'http://example.com/one'
resolve('http://example.com/one', '/two'); // 'http://example.com/two'

Параметры

from: string

Базовый URL, используемый, если to является относительным URL.

to: string

Целевой URL для разрешения.

Тип возвращаемого значения

string

функция urlToHttpOptions

Использование в Deno

import { urlToHttpOptions } from "node:url";
urlToHttpOptions(url: URL): ClientRequestArgs

Эта вспомогательная функция преобразует объект URL в обычный объект параметров, ожидаемый API http.request() и https.request().

import { urlToHttpOptions } from 'node:url';
const myURL = new URL('https://a:b@測試?abc#foo');

console.log(urlToHttpOptions(myURL));
/*
{
  protocol: 'https:',
  hostname: 'xn--g6w251d',
  hash: '#foo',
  search: '?abc',
  pathname: '/',
  path: '/?abc',
  href: 'https://a:b@xn--g6w251d/?abc#foo',
  auth: 'a:b'
}

Параметры

url: URL

Объект WHATWG URL для преобразования в объект параметров.

Тип возвращаемого значения

ClientRequestArgs

Объект параметров


интерфейс FileUrlToPathOptions

Использование в Deno

import { type FileUrlToPathOptions } from "node:url";

Свойства

windows: boolean | undefined
необязательный

true, если path следует вернуть в виде пути Windows, false для POSIX и undefined для системы по умолчанию.


интерфейс Global

Использование в Deno

import { type Global } from "node:url";

Свойства

URL: _URL
URLSearchParams: _URLSearchParams

интерфейс PathToFileUrlOptions

Использование в Deno

import { type PathToFileUrlOptions } from "node:url";

Свойства

windows: boolean | undefined
необязательный

true if the path should be return as a windows filepath, false for posix, and undefined for the system default.


интерфейс Url

Использование в Deno

import { type Url } from "node:url";

Свойства

auth: string | null
hash: string | null
host: string | null
hostname: string | null
href: string
path: string | null
pathname: string | null
protocol: string | null
search: string | null
slashes: boolean | null
port: string | null
query:
string
| null
| ParsedUrlQuery

интерфейс URLFormatOptions

Использование в Deno

import { type URLFormatOptions } from "node:url";

Свойства

auth: boolean | undefined
необязательный

true if the serialized URL string should include the username and password, false otherwise.

fragment: boolean | undefined
необязательный

true if the serialized URL string should include the fragment, false otherwise.

search: boolean | undefined
необязательный

true if the serialized URL string should include the search query, false otherwise.

unicode: boolean | undefined
необязательный

true if Unicode characters appearing in the host component of the URL string should be encoded directly as opposed to being Punycode encoded.


интерфейс UrlObject

Использование в Deno

import { type UrlObject } from "node:url";

Свойства

auth:
string
| null
| undefined
необязательный
hash:
string
| null
| undefined
необязательный
host:
string
| null
| undefined
необязательный
hostname:
string
| null
| undefined
необязательный
href:
string
| null
| undefined
необязательный
pathname:
string
| null
| undefined
необязательный
protocol:
string
| null
| undefined
необязательный
search:
string
| null
| undefined
необязательный
slashes:
boolean
| null
| undefined
необязательный
port:
string
| number
| null
| undefined
необязательный
query:
string
| null
| ParsedUrlQueryInput
| undefined
необязательный

интерфейс URLSearchParamsIterator

расширяет [NodeJS.Iterator]<T, BuiltinIteratorReturn, unknown>

Использование в Deno

import { type URLSearchParamsIterator } from "node:url";

Параметры типа

T

Методы

[[Symbol.iterator]](): URLSearchParamsIterator<T>

интерфейс UrlWithParsedQuery

расширяет Url

Использование в Deno

import { type UrlWithParsedQuery } from "node:url";

Свойства

query: ParsedUrlQuery

интерфейс UrlWithStringQuery

расширяет Url

Использование в Deno

import { type UrlWithStringQuery } from "node:url";

Свойства

query: string | null

© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/node/url

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API