Spec-Zone.ru › Web APIs

API URL

Примечание: Эта функция доступна в Потоках Web Workers.

API URL — это компонент стандарта URL, который определяет, что представляет собой допустимый указатель ресурса, и API, который предоставляет доступ к URL-адресам и позволяет их изменять. Стандарт URL также определяет понятия, такие как домены, хосты и IP-адреса, а также пытается описать стандартным способом устаревший application/x-www-form-urlencoded тип MIME, используемый для отправки содержимого веб-форм в виде набора пар ключ/значение.

Основные понятия и использование

Большая часть стандарта URL посвящена определению URL и его структуре и разбору. Также рассматриваются определения различных терминов, связанных с адресацией компьютеров в сети, и указаны алгоритмы разбора IP-адресов и адресов DOM. Большинство разработчиков больше интересует сам API.

Доступ к компонентам URL

Создание объекта URL для заданного URL-адреса анализирует URL и предоставляет быстрый доступ к его составным частям через его свойства.

let addr = new URL("https://developer.mozilla.org/en-US/docs/Web/API/URL_API");
let host = addr.host;
let path = addr.pathname;

В приведенном выше фрагменте кода создается объект URL для статьи, которую вы сейчас читаете, а затем извлекаются свойства host и pathname. В этом случае эти строки равны соответственно developer.mozilla.org и /en-US/docs/Web/API/URL_API.

Изменение URL

Большинство свойств URL могут быть изменены; вы можете записать новые значения в них, чтобы изменить URL, представленный объектом. Например, чтобы создать URL и установить его имя пользователя:

let myUsername = "some-guy";
let addr = new URL("https://example.com/login");
addr.username = myUsername;

Установка значения свойства username не только устанавливает значение этого свойства, но и обновляет весь URL. После выполнения приведенного выше фрагмента кода значение, возвращаемое href, равно https://some-guy@example.com/login. Это верно для любого из изменяемых свойств.

Запросы

Свойство search объекта URL содержит часть строки запроса URL. Например, если URL-адрес равен https://example.com/login?user=some-guy&page=news, то значение свойства search равно ?user=some-guy&page=news. Вы также можете найти значения отдельных параметров с помощью метода get() объекта URLSearchParams:

let addr = new URL("https://example.com/login?user=some-guy&page=news");
try {
  loginUser(addr.searchParams.get("user"));
  gotoPage(addr.searchParams.get("page"));
} catch (err) {
  showErrorMessage(err);
}

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

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

Интерфейсы

API URL — это простой API, с несколькими интерфейсами:

URL

Можно использовать для анализа, построения, нормализации и кодирования URL-адресов.

URLSearchParams

Определяет вспомогательные методы для работы со строкой запроса URL.

Примеры

Если вы хотите обработать параметры, включенные в URL-адрес, вы можете сделать это вручную, но намного проще создать объект URL, чтобы он сделал это за вас. Функция fillTableWithParameters() ниже принимает в качестве входного значения объект HTMLTableElement, представляющий таблицу. Строки добавляются в таблицу, по одной на каждый ключ, найденный в параметрах; первый столбец содержит имя ключа, а второй столбец — значение.

Обратите внимание на вызов URLSearchParams.sort() для сортировки списка параметров перед генерацией таблицы.

function fillTableWithParameters(tbl) {
  const url = new URL(document.location.href);
  url.searchParams.sort();
  const keys = url.searchParams.keys();

  for (const key of keys) {
    const val = url.searchParams.get(key);
    const row = document.createElement("tr");
    const cell1 = document.createElement("td");
    cell1.innerText = key;
    row.appendChild(cell1);
    const cell2 = document.createElement("td");
    cell2.innerText = val;
    row.appendChild(cell2);
    tbl.appendChild(row);
  }
}

Рабочая версия этого примера доступна на Glitch. Просто добавьте параметры в URL при загрузке страницы, чтобы увидеть их в таблице. Например, попробуйте https://url-api.glitch.me?from=mdn&excitement=high&likelihood=inconceivable.

Спецификации

Спецификация
URL
# api

Совместимость с браузерами

Настольный Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet WebView Android
@@iterator 49 17 44 36 10.1 49 44 36 10.3 5.0 49
URLSearchParams 49 17 29 36 10.1 49 29 36 10.3 5.0 49
URL_API 49 17
29До версии 57 одиночные кавычки в URL кодировались (см. bug 1386683).
36 10.1 49
29До версии 57 одиночные кавычки в URL кодировались (см. bug 1386683).
36 10.3 5.0 49
append 49 17 29 36 10.1 49 29 36 10.3 5.0 49
delete 49 17 29 36 14
10.1Удаление несуществующего параметра запроса не удаляет ? из URL. См. bug 193022.
49 29 36 14
10.3Удаление несуществующего параметра запроса не удаляет ? из URL. См. bug 193022.
5.0 49
entries 49 17 44 36 10.1 49 44 36 10.3 5.0 49
forEach 49 17 44 36 10.1 49 44 36 10.3 5.0 49
get 49 17 29 36 10.1 49 29 36 10.3 5.0 49
getAll 49 17 29 36 10.1 49 29 36 10.3 5.0 49
has 49 17 29 36 10.1 49 29 36 10.3 5.0 49
keys 49 17 44 36 10.1 49 44 36 10.3 5.0 49
set 49 17 29 36 10.1 49 29 36 10.3 5.0 49
size 113 113 112 99 17 113 112 76 17 23.0 113
sort 61 17 54 48 11 61 54 45 11 8.0 61
toString 49 17 29 36 10.1 49 29 36 10.3 5.0 49
values 49 17 44 36 10.1 49 44 36 10.3 5.0 49
Настольный Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet WebView Android
END_OF_DOCUMENT_MARKER
URL 19
12До Edge 79, аргументы запроса в базовом URL удалялись при вызове конструктора URL.
26До версии 122, host, hostname и port не обрабатывались для неизвестных протоколов/схем.
15 14.1
6До Safari 14.1, вызов конструктора URL с базовым URL, значение которого undefined, приводил к ошибке TypeError в Safari, см. ошибка 216841.
25
26До версии 122, host, hostname и port не обрабатывались для неизвестных протоколов/схем.
14 14.5
6До Safari на iOS 14.1, вызов конструктора URL с базовым URL, значение которого undefined, приводил к ошибке TypeError в Safari на iOS, см. ошибка 216841.
1.5 4.4
URL_API 3219 12
19До версии 57, в Firefox была ошибка, из-за которой одиночные кавычки в URL экранировались при доступе через API URL (см. ошибка 1386683).
1915 76 3225
19До версии 57, в Firefox для Android была ошибка, из-за которой одиночные кавычки в URL экранировались при доступе через API URL (см. ошибка 1386683).
1914 76 2.01.5 4.44
canParse_static 120 120 115 106 17 120 115 80 17 25.0 120
createObjectURL_static 19 12
19createObjectURL() больше недоступен в контексте ServiceWorker.
15 6 25
19createObjectURL() больше недоступен в контексте ServiceWorker.
14 6 1.5 4.4
hash 32 13 22 19 7 32 22 19 7 2.0 4.4.3
host 32 13 22 19 7 32 22 19 7 2.0 4.4.3
hostname 32 13 22 19 10 32 22 19 10 2.0 4.4.3
href 32 13 22 19 10 32 22 19 10 2.0 4.4.3
origin 32 12 26
26–49Результаты для URL с использованием схемы blob некорректно вернули null.
19 10 32 26
26–49Результаты для URL с использованием схемы blob некорректно вернули null.
19 10 6.0 4.4.3
parse_static 126 126 126 112 18 126 126 83 18 Нет 126
password 32 12 26 19 10 32 26 19 10 6.0 4.4.3
pathname 32 13
22До Firefox 53, pathname и search возвращали неверные значения для пользовательских протоколов. Учитывая protocol:host/x?a=true&b=false, pathname возвращал "/x?a=true&b=false", а search возвращал "", а не "/x" и "?a=true&b=false" соответственно. См. ошибка 1310483.
19 10 32
22До Firefox для Android 53, pathname и search возвращали неверные значения для пользовательских протоколов. Учитывая protocol:host/x?a=true&b=false, pathname возвращал "/x?a=true&b=false", а search возвращал "", а не "/x" и "?a=true&b=false" соответственно. См. ошибка 1310483.
19 10 2.0 4.4.3
port 32 13 22 19 10 32 22 19 10 2.0 4.4.3
protocol 32 13 22 19 10 32 22 19 10 2.0 4.4.3
revokeObjectURL_static 19 12
19revokeObjectURL() больше недоступен в контексте ServiceWorker.
15 6 25
19revokeObjectURL() больше недоступен в контексте ServiceWorker.
14 6 1.5 4.4
search 32 13
22До Firefox 53, pathname и search возвращали неверные значения для пользовательских протоколов. Учитывая protocol:host/x?a=true&b=false, pathname возвращал "/x?a=true&b=false", а search возвращал "", а не "/x" и "?a=true&b=false" соответственно. См. ошибка 1310483.
19 10 32
22До Firefox для Android 53, pathname и search возвращали неверные значения для пользовательских протоколов. Учитывая protocol:host/x?a=true&b=false, pathname возвращал "/x?a=true&b=false", а search возвращал "", а не "/x" и "?a=true&b=false" соответственно. См. ошибка 1310483.
19 10 2.0 4.4.3
searchParams 51 17 29 38 10.1 51 29 41 10.3 5.0 51
toJSON 71 17 54 58 11 71 54 50 11 10.0 71
toString 19 17 54 15 7 25 54 14 7 6.0 4.4
username 32 12 26 19 10 32 26 19 10 6.0 4.4.3

api.URL

Таблицы BCD загружаются только в браузере

api.URLSearchParams

Таблицы BCD загружаются только в браузере

См. также

  • Fetch API
  • CSS тип значения URL
  • encodeURI()
  • encodeURIComponent()

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/URL_API

Spec-Zone.ru

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