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 | Помилка типізованого розбору |