Кодирование URL конвертирует символы в формат, который можно безопасно передать в качестве URL-адреса ресурса через интернет.
URL — это Единый указатель ресурсов (англ. Uniform Resource Locator). Веб-браузеры запрашивают HTML-документы с сервера, используя URL-адрес.
URL — это адрес веб-страницы, например: http://www.wm-school.ru
Кодирование URL
URL-адрес ресурса отправляется в интернет в ASCII-кодировке.
Если в URL содержатся символы, не входящие в ASCII-кодировку, URL конвертируется. Перекодироваться должны буквы кириллицы, буквы с диакритическими знаками, лигатуры, иероглифы. Кодирование URL конвертирует этот адрес в ASCII формат.
Кодировщик URL заменяет небезопасные символы ASCII знаком (%), за которым следуют два шестнадцатиричных числа, которые соответствуют значениям символов из кодировки ISO-8859-1. URL не должен содержать пробелы. Кодировщик URL обычно заменяет пробелы знаком (%20).
URL-коды специальных (управляющих) символов
Первоначально управляющие символы таблицы ASCII (диапазон 00-31, плюс 127) были разработаны для того, чтобы управлять устройствами аппаратных средств, таких как телетайп, ввод данных на перфоленту и др.
URI, URL, URN. Что это, чем отличаются
Управляющие символы (кроме горизонтальной табуляции, перевода строки и возврата каретки) не используются в HTML-документах.
Таблица URL-кодов специальных (управляющих) символов
URL-коды символов ISO-Latin (диапазон 128-255)
Символы в диапазоне с 128 по 255 отводятся для специфических символов букв алфавитов западно-европейских языков, символов псевдографики, некоторых букв греческого алфавита, а также ряда математических и финансовых символов.
URL-коды символов ISO-Latin (диапазон 128-255)
Зарезервированные символы
Зарезервированные символы — это специальные символы, такие как знак доллара, амперсанд, плюс, слэш, двоеточие, точка с запятой, знак равенства, знак вопроса, знак эт (собака). Все они могут иметь различные значения в URL, поэтому должны быть закодированы.
Таблица URL-кодов зарезервированных символов
Небезопасные символы
Небезопасные символы — это пробел, кавычки, знак меньше, знак больше, знак диез, знак проценты, фигурные скобки, прямой слэш, обратный слэш, тильда, квдратные скобки, гравис. Эти символы также должны всегда быть закодированы.
Источник: www.wm-school.ru
Проектирование URL + REST
Важно отметить, что часть URL до # интерпретируется web сервером, после # (якорь) — браузером.
Best practices
Неизменяемые URL
Как сказал Тим Бернерс-Ли в 1998 году «Клёвые URI не меняются». Структура URL не должна содержать ничего, что может со временем измениться. Пользователи должны иметь возможность открыть сохранённую закладку через несколько лет.
Человекочитаемые URL
- пользователь не имеет аккаунта на сайте, но необходимо сохранить произведённые расчёты, чтобы в дальнейшем к ним вернуться.
- пользователю необходимо сгененрировать уникальную одноразовую ссылку для восстановления пароля.
Доступность страницы по ID и ID-slug
Неплохой практикой является создание страниц с идентификаторами ( /publications/336 ) с возможностью добавления полного пути ( /publications/336-gis-address-plan ), когда это необходимо, при этом оставляя доступ к странице по идентификатору.
Структура формирования url-адресов в Интернет.
Короткие URL
URL следует делать как можно короче. Они легче запоминаются.
В URL не должно быть расширения файлов
URL-адреса должны быть свободны от .php, .aspx, .html и т.д. В случае смены языка сервера будет необходимо обработать каждую страницу.
Не использовать символы, отличные от ASCII.
В общем случае лучше избегать национального алфавита. президент.рф кончено неплохо, но лучше kremlin.ru. При необходимости лучше иметь домен на латинце и редирект на него с кириллицы.
Даты следует кодировать YYYY/MM/DD
Избегайте других форматов /YYYY-MM-DD/ или /YYYYMMDD/ , потому что они сложнее воспринимаются и менее дружелюбны пользователю. https://tyapk.ru/blog/archive/2018/6 однозначно лучше https://tyapk.ru/blog/archive/20186
Hackable URL
В хорошо спроектированном URL-адресе пользователь может изменить или удалить часть пути и получить ожидаемый результат. Например страница https://tyapk.ru/blog/archive/2018/6 выводит посты за июнь 2018 года. Если в URL заменить 2018 на 2017, то полученная страница должна выводить посты за июнь 2017 года. А если удалить /6 , то пользователь должен получить посты за выбранный год.
Пространства имён (разделы)
Раздел верхнего уровня пути является самым ценным в URL-адресе. Если разрабатываемый сайт позволяет пользователям зарегистрироваться и иметь свой собственный URL-адрес на верхнем уровне, следует создать черный список имен пользователей, содержащих все текущие и возможные будущие функции, которые могут возникнуть.
Например в ВК просмотр профилей доступен через идентификаторы пользователей с префиксом id , например /id1, /id123456, id765432, а также есть именованые адреса страниц пользователей, например /durov, /brezhnev, /putin. Но при этом существуют разделы /friends , /feed , /settings , /im . Соответственно пользователи сервиса не должны иметь возможность выбрать /friends , /settings или /id в качестве своего адреса страницы.
- /octobercms/followers — подписчики пользователя octobercms
- /octobercms/likes — лайки пользователя octobercms
Настройки учетной записи не должны распологаться за именем пользователя. Они располагаются в /account или /settings . Кроме того, не следует путать пользователя добавляя некоторые функции в /feature/ , а другие — в /feature .
Если сайт начинается как блог, но ожидается его расширение в будущем, имеет смысл размещать все посты в /blog/ в качестве раздела верхнего уровня, чтобы избежать возможных конфликтов позже.
Подстраницы разделов
- Общее — /settings
- Оповещения — /settings/notifications
- Приложения — /settings/applications .
При этом существует альтернативная стратегия организации первой страницы. Общее располагается по адресу /settings/account , при этом путь /settings редиректит на неё.
Соблюдайте соглашения сообщества об именовании
Маршруты ресурсов принято писать во множественном числе articles/1 , (не принято article/1 ).
Дефисы в качестве разделителя слов
Символы подчеркивания не прижились, и у них нет ощутимых преимуществ перед дефисами. /about-us/ вместо /about_us
Немного о REST
В URL не используются глаголы.
Проектирование URL происходит вокруг ресурсов.
Для реализации отношений добавляются разделы
Следует избегать структуры сложнее collection/item/collection
Версионирование
При разработке всегда версионируйте API. /api/v1/publications
Документация
- Swagger
- Apiary
- https://google.aip.dev/122
- https://indieweb.org/URL_design
- https://tools.ietf.org/html/rfc6570
- https://www.w3.org/2011/gld/wiki/223_Best_Practices_URI_Construction
- https://www.creativebloq.com/design/design-perfect-url-1126509
- https://docs.microsoft.com/ru-ru/azure/architecture/best-practices/api-design
- http://restcookbook.com
- http://www.restapitutorial.ru/lessons/restfulresourcenaming.html
Похожие записи
Руководство по Markdown
Markdown — облегчённый язык разметки, созданный с целью написания максимально читаемого и удобного для правки текста, но пригодного для преобразования HTML и другие языки публикаций.
28 октября 2017 г. в Общее
Два шаблона компонента October CMS.
В статье рассказывается как в CMS October использовать несколько шаблонов (представлений) компонентов.
26 сентября 2017 г. в October CMS, Общее
Блокировка сайта антивирусом NOD32
Краткая история как этот сайт заблокировал nod32 и куда обращаться для разблокировки.
04 октября 2017 г. в Общее
Как проверить ширину канала между компьютерам?
Речь об утилите командной строки iperf для проверки пропускной способности сети
17 октября 2018 г. в Общее
Обзор средств хранения данных в браузере
- IndexedDB
- LocalStorage и SessionStorage
- Cookies
и немного про остальное
31 августа 2021 г. в JavaScript, Общее
Про светодиодные лампочки
Максимальные мощности и световые потоки светодиодных ламп разных типов
03 мартa 2019 г. в Общее, Типичные советы
Сайт работает на October CMS
Источник: tyapk.ru
Что такое URI, URL, URN и чем они различаются
Пост из серии «Ликбез». Всегда хотел это понять, но значимость его была настолько мала, что всегда находился повод этого не делать.
А вы задавались вопросом: URL — что это?
Всегда с таким сталкиваюсь, но до сих пор не желал понять в чем различие между терминами URI, URL, URN.
По началу, данная статья была результатом перевода «в лоб», в результате чего по ней разгорелись довольно нешуточные комментарии.
Позже, я решил переосмыслить чужие доводы и отчасти переписал первоисточник, стараясь внести ясность в повествование.

Вы когда-нибудь обращали внимание на адресную строку в Вашем браузере?
Что это? URI, URL или URN?
Многие из нас не делают различий между URI, URL, URN, а кое-кто даже и не слышал терминов URI и URN, все просто пользуются термином URL.
Давайте вместе попытаемся разобраться в этом.
Расшифровка аббревиатур
URL — Uniform Resource Locator (унифицированный определитель местонахождения ресурса)
URN — Unifrorm Resource Name (унифицированное имя ресурса)
URI — Uniform Resource Identifier (унифицированный идентификатор ресурса)
