В чём разница между URL и URI?

Ответ

URI (Uniform Resource Identifier) — это общий термин для строки, которая идентифицирует какой-либо ресурс.

URL (Uniform Resource Locator) — это подтип URI, который не только идентифицирует ресурс, но и предоставляет информацию о месте его нахождения (доступе) в сети.

Проще: Все URL являются URI, но не все URI являются URL.

Классификация URI:

  1. URL (Locator): Указывает как и где найти ресурс.
    • Пример: https://example.com/docs/page.html
    • Пример: ftp://files.example.com/archive.zip
  2. URN (Uniform Resource Name): Указывает уникальное имя ресурса в конкретном пространстве имён, но не путь к нему.
    • Пример: urn:isbn:0451450523 (книга)
    • Пример: urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66

Сравнение на примерах:

Пример Тип Объяснение
https://api.service.com/users/123 URL (и URI) Содержит протокол (https), хост (api.service.com) и путь (/users/123) для доступа к ресурсу.
mailto:user@domain.com URI (но не URL в строгом смысле) Идентифицирует ресурс (почтовый адрес), но не указывает его местоположение в сети для прямого доступа. Это URI scheme.
./config.yaml Относительный URI Идентифицирует ресурс относительно текущего контекста.

Техническая деталь: В современных спецификациях (RFC 3986) концепция URN и URL считается устаревшей, и все они рассматриваются просто как URI. Однако различие между "идентификатором" (URI) и "адресом" (URL) остаётся полезным на практике.

Ответ 18+ 🔞

А, слушай, смотри, тут такая тема про эти ваши URI и URL. Ну, в общем, представь, что у тебя есть какая-нибудь хуйня, которую нужно как-то назвать и найти. Вот для этого всё и придумали.

URI (Uniform Resource Identifier) — это, блядь, просто общее название для любой строки, которая идентифицирует что угодно. Как паспорт, только для данных, сука. Назвал — и всё, идентифицировал.

URL (Uniform Resource Locator) — это уже не просто имя, а, ёпта, полный адрес с пропиской! Это подвид URI, который не только говорит что это, но и орёт где это лежит и как до этого доёбаться по сети.

Короче, запомни раз и нахуй: Каждый URL — это URI, но не каждая URI — это URL. Как квадрат и прямоугольник, только про интернет, блядь.

А теперь классификация, держись:

  1. URL (Locator): Кричит КАК и ГДЕ найти ресурс. Самый популярный пацан.
    • Пример: https://example.com/docs/page.html — вот, смотри, протокол, сервак, путь. Всё на блюдечке.
    • Пример: ftp://files.example.com/archive.zip — та же фигня, только файлы качать.
  2. URN (Uniform Resource Name): А это, бля, такой философ, который даёт ресурсу уникальное и вечное имя, но нихуя не говорит, где его искать. Типа "я тебя назову, а ищи сам, пидор".
    • Пример: urn:isbn:0451450523 — это номер книги. Где она? Хуй его знает. Может, в библиотеке, а может, у меня на полке.
    • Пример: urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 — уникальный айдишник. Ищи, свищи.

Сравнительная таблица, чтобы вообще мозг не взорвался:

Пример Тип Объяснение
https://api.service.com/users/123 URL (и заодно URI) Во, классика! Тут тебе и https, и сервер, и путь к юзеру. Полный фарш, ебать.
mailto:user@domain.com URI (но не URL в строгом смысле) Ну, это схема, блядь. Ты идентифицируешь почтовый адрес, но это не адрес в интернете, куда можно зайти. Это инструкция для почтовой программы.
./config.yaml Относительный URI А это хитрая жопа. Идентификатор, но относительно того места, где ты сейчас стоишь. Типа "конфиг в этой же папке, мудак".

Техническая прихуйня, которую знать надо, но можно сделать вид, что не знаешь: По новым правилам (RFC 3986) все эти деления на URN и URL — немного устаревшая поебень. Теперь всё зовут просто URI. Но разница между "названием" и "адресом" всё равно остаётся, и она, блядь, очень удобная, чтобы не выглядеть идиотом на собеседовании. Вот так вот.