URL-адреса и строки запроса

URL-адреса и строки запроса

URL-адреса и строки запроса

Слой URL реализует парсинг в стиле WHATWG — то же поведение, которое применяют браузеры — поэтому URL, извлечённые из документов, разрешаются и нормализуются так, как они бы делались в реальном пользовательском агенте.


Разбор и проверка

URL.parse() разбирает абсолютный или относительный URL; URL.can_parse() отвечает на вопрос о валидности без создания объекта. Ошибки разбора вызывают типизированный URLParseError.

Строки запроса

URLSearchParams читает и изменяет параметры запроса: append(), get(), get_all(), has() и delete() охватывают полный цикл, сохраняя семантику множественных значений.


Советы и лучшие практики

  • Используйте can_parse() для простой валидации в фильтрах; создавайте с помощью parse() только когда нужны компоненты
  • Помните, что ключи запроса могут повторяться — используйте get_all(), когда параметр может встречаться более одного раза
  • Отлавливайте URLParseError, а не делайте предварительную проверку с помощью регулярных выражений

Распространённые проблемы

ПроблемаПричинаИсправление
Относительный URL не удаётся разобратьНе указан базовый путьУкажите базу согласно URL.parse()
Возвращается только первое значение параметра запросаИспользовано get() для повторяющегося ключаИспользовать get_all()
Необычные символы в компонентахНормализация WHATWG в действииОжидается — это соответствует поведению браузера

FAQ

Следует ли разбор стандарту WHATWG?

Да — нормализация и разбиение компонентов отражают поведение браузера.

Как проверить URL без его разбора?

URL.can_parse() возвращает валидность без создания объекта.

Могу ли я отредактировать строку запроса на месте?

Да — URLSearchParams поддерживает круговые операции append/get/has/delete.


API Reference Сводка

Класс/МетодОписание:
URL.parseРазобрать URL
URL.can_parseПроверка корректности без построения
URLSearchParams.appendДобавить параметр запроса
URLSearchParams.get_allВсе значения для ключа
URLParseErrorОшибка типизированного разбора

См. также:

 Русский