Ответ
URL (Uniform Resource Locator) — это строка, указывающая адрес ресурса в интернете. Состоит из нескольких частей:
https://www.example.com:8080/path/to/resource?query=param#fragment
- Протокол (
https://) — способ доступа (HTTP, HTTPS, FTP и т.д.) - Домен (
www.example.com) — имя сервера - Порт (
:8080) — необязательный, по умолчанию 80 (HTTP) или 443 (HTTPS) - Путь (
/path/to/resource) — расположение ресурса на сервере - Параметры (
?query=param) — данные для сервера - Якорь (
#fragment) — ссылка на часть страницы (обрабатывается браузером)
Пример создания URL в JavaScript:
const url = new URL('https://example.com/search');
url.searchParams.set('q', 'test');
console.log(url.href); // "https://example.com/search?q=test"
URL кодируется согласно стандарту RFC 3986, пробелы заменяются на %20 и т.д.
Ответ 18+ 🔞
А, ну это же про эти ваши интернет-адреса, которые в строке браузера светятся! URL, блядь, Uniform Resource Locator, звучит как заклинание, но на деле — просто бумажка с координатами, где искать картинку с котиками или видос про то, как мужик упал с табуретки.
Вот смотри, разберём эту хуйню по косточкам, как нормальные люди:
https://www.example.com:8080/path/to/resource?query=param#fragment
Выглядит страшно, а на деле — проще пареной репы, если не тупить.
-
Протокол (
https://) — это как способ доехать: на метро (http://), на такси (https://, оно зашифрованное, круче) или на гужевом транспорте (ftp://). Главное — договориться с сервером на одном языке, а то он тебя не поймёт, пидарас шерстяной. -
Домен (
www.example.com) — это, блядь, адрес дома.www— часто подъезд,example— улица,com— город, район такой. Вместоcomможет бытьru,orgили ещё какая хитрая жопа. -
Порт (
:8080) — это конкретная дверь в этом доме. Обычно её не пишут, потому что все знают: дляhttpдверь №80, дляhttps— №443. А если написали:8080— значит, хозяин живёт в чёрном входе, с подворотни. Необязательная хуйня, но бывает. -
Путь (
/path/to/resource) — это уже внутри дома: заходишь в подъезд (/), поднимаешься на третий этаж (/path/), ищешь квартиру 25 (/to/resource). Где лежит тот самый файлик, который тебе нужен. -
Параметры (
?query=param) — а это, сука, самое интересное! Ты стучишься в дверь и говоришь: «Открой, я с пивом!».?— это стук,query=param— это «я с пивом». Можно несколько:?search=котики&sort=by_laughs. Сервер читает это и думает: «Ага, чувак хочет котиков, отсортированных по смешности». Без этого — просто отдаст что попало. -
Якорь (
#fragment) — это уже внутри квартиры. Открыл дверь, зашёл, и сразу: «Покажи мне не весь диван, а ту самую пятно от вина на правой подушке!». Браузер сам скроллит страницу до нужного места. Серверу на этот#fragmentобычно похуй.
А вот, кстати, как эту магию в JavaScript вызвать, чтобы не писать всё руками, как лох:
const url = new URL('https://example.com/search');
url.searchParams.set('q', 'test');
console.log(url.href); // "https://example.com/search?q=test"
Видишь? Создал объект, тыкнул методом .set() в параметры — и всё, красота, блядь. Автоматом тебе и знак вопроса подставится, и всё закодируется, если надо.
Кстати, да, кодирование! Потому что в URL нельзя просто так взять и написать пробел или кириллицу. Это ж протокол, ёпта, старый и строгий. Поэтому пробел становится %20, а «Привет» превращается в %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82. Стандарт RFC 3986, вся эта хуйня. Браузеры и new URL() делают это за тебя, но знать-то надо, а то однажды получишь ошибку, обосрёшься и будешь думать, что интернет сломался.
Вот и вся наука. Не так страшен чёрт, как его малюют. Главное — понять, что это просто структурированная строка, как адрес на конверте, только для компьютеров.