URL / URI Tools

проверка шаблонов URIразберите каждый фрагмент результата

Введите один шаблон и объект JSON, чтобы увидеть URI и результат каждого выражения.

проверка шаблонов URI

Шаблон URI

Переменные JSON

Шаблоны и переменные обрабатываются в этом браузере. Запросы по введённым и полученным адресам не отправляются.

Раскрытый URI

Пропущенные переменные: Нет

Неиспользованные ключи JSON: Нет

Подробности выражений

Строка 1, столбец 24

{/version,resource}
  • Переменная: version · Определена
  • Переменная: resource · Определена

Раскрытый фрагмент: /v1/search

Строка 1, столбец 43

{?q,page,tags*}
  • Переменная: q · Определена
  • Переменная: page · Определена
  • Переменная: tags* · Определена

Раскрытый фрагмент: ?q=hello%20world&page=2&tags=red&tags=blue

Показано выражений: 2 из 2

Синтаксис раскрытия

RFC 6570, уровень 4: {var}, {+var}, {#var}, {.var}, {/var}, {;var}, {?var}, {&var}. :n ограничивает префикс, * раскрывает элементы списков и словарей.

Лимиты в единицах UTF-16: шаблон 16 384, JSON 65 536, результат 262 144; до 500 выражений.

Выражений: 2 · пропущено переменных: 0 · единиц в результате: 75

Косая черта внутри идентификатора и разделитель сегментов пути могут выглядеть одинаково, но требуют разного кодирования. Проверка шаблонов URI позволяет подставить реальные значения и заметить эту разницу до использования шаблона в API-клиенте.

Шаблоны URI описывают также списки, словари и необязательные значения. Подстановка переменных выполняется по RFC 6570. Можно вводить относительные ссылки и исследовать отдельный путь, не добавляя к нему вымышленный домен или протокол.

Что показывает проверка шаблонов URI

Найдите причину пропуска параметра

Проверка шаблонов URI связывает выражение с его позицией и полученным фрагментом. Если параметр исчез, проверьте, отсутствует ли переменная, равна ли она null или пустой коллекции. Пустая строка помечается отдельно: она считается определённым значением.

Цветные значения заполняют соответствующие места шаблона, образуя сегменты пути и запроса.

Сравните результат со звёздочкой и без неё

{?tags} собирает список в одно значение с запятыми. {?tags*} повторяет имя tags для каждого элемента. При раскрытии словаря используются ключи его членов. Подробности позволяют проверить эту структуру, не выискивая разделители в длинном адресе.

Сверху три элемента объединены в одно значение, снизу раскрыты в три отдельные пары параметров запроса.

Проверьте имена, типы и момент обновления

01

Указывайте точное имя ключа

user.id обозначает ключ с полным именем "user.id", а не путь к вложенному объекту. Процентные последовательности в именах не декодируются. Регистр и написание в шаблоне должны совпадать с ключами JSON.

02

Выберите пример с нужным поведением

Пример зарезервированных символов сохраняет косые черты внутри пути. Составной пример показывает списки, словари и префиксы Unicode. Загрузка сначала открывает предпросмотр; после применения можно один раз вернуть прежние данные вместе с результатом.

03

Сохраняйте только актуальный результат

Автоматическое раскрытие запускается через 350 мс после изменения. Отключите его для работы кнопкой или Ctrl/Cmd + Enter. Редактирование сразу блокирует копирование и скачивание старого результата до успешной обработки новых данных.

Операторы, точные значения и диагностика

Все четыре уровня синтаксиса

Проверка шаблонов URI поддерживает простое раскрытие и операторы +, #, ., /, ;, ?, &. :n берёт префикс длиной 1–9999 символов Unicode, а * раскрывает списки и словари по элементам. Процентное кодирование и разделители задаются оператором.

Числовые идентификаторы без округления

Числа JSON сохраняют исходную запись. Например, 9007199254740993 не преобразуется в число с плавающей точкой. Записи -0 и с показателем степени также остаются неизменными. Логические значения раскрываются как true или false. Исходный текст переменных сохраняется в отчёте.

Ошибки не смешиваются с пропусками

Ошибки синтаксиса шаблона и JSON показывают строку и столбец. Повторяющиеся ключи отклоняются, вложенные значения указываются через JSON Pointer. Неопределённая переменная — диагностический случай, а не синтаксическая ошибка: её фрагмент может законно оказаться пустым.

Полный отчёт для повторения опыта

Копирование возвращает только URI. JSON-отчёт содержит шаблон, исходный JSON переменных, все выражения и пропущенные либо неиспользованные имена. Интерфейс показывает по 50 выражений, но скачиваемый файл включает также ещё не показанные записи.

Допустимые данные и границы обработки

Один неглубокий объект переменных
Корень JSON должен быть объектом. Значения — строки, числа, логические значения, null, списки или словари скаляров. Вложенные контейнеры отклоняются даже у неиспользованных переменных. Импорт файлов и пакетная обработка наборов переменных не предусмотрены.
Пустая строка остаётся значением
Отсутствующие ключи, null и пустые коллекции пропускаются; члены со значением null также игнорируются. Для пустой строки {?x} даёт ?x=, а {;x} — ;x. Пустой шаблон допустим при корректном JSON переменных.
Имена сравниваются без преобразований
Регистр имеет значение. Точки не обращаются к вложенным объектам, процентные последовательности в именах не декодируются и не нормализуются. Повторный ключ вызывает ошибку вместо перезаписи. Порядок членов словаря берётся из исходного JSON.
Результат не проходит нормализацию URL
Простое раскрытие кодирует и знак %, тогда как + и # сохраняют допустимые процентные последовательности и зарезервированные символы. Пробелы в литералах запрещены. Unicode кодируется в UTF-8 без нормализации; протокол, базовый адрес и преобразование хоста не добавляются.
Ограничения размера и отказ от частичного экспорта
Для шаблона, JSON и результата установлены пределы 16 384, 65 536 и 262 144 единицы UTF-16, максимум 500 выражений. Общий парсер ограничивает глубину до 100, узлы до 50 000 и числовой токен до 1 000 символов. Ошибка блокирует экспорт частичного и предыдущего результата.
Только раскрытие в прямом направлении
Нет обратного сопоставления маршрутов, проверки доступности, удалённого импорта, значений по умолчанию или исполнения кода. Разделители фиксированы стандартом. Для особого способа соединения подготовьте строку в переменных до раскрытия шаблона.

Вопросы: проверка шаблонов URI

Нужно ли применять процентное кодирование к фигурным скобкам шаблона URI?

Скобки выражений оставляйте буквальными: /users/{id} содержит переменную. В /users/%7Bid%7D скобки уже являются закодированным литералом, поэтому подстановки не будет. Не кодируйте шаблон целиком заранее: значения кодирует выбранный оператор.

Чем оператор / отличается от других префиксов в RFC 6570?

/ добавляет косую черту перед каждой определённой переменной, а для списка со * — перед каждым элементом. Простое раскрытие кодирует черты внутри значений. + сохраняет их, но сам новую черту не добавляет. Эти операции решают разные задачи.

Позволяет ли RFC 6570 разделять необязательные параметры пробелами?

Оператора для произвольного необязательного разделителя нет. Подготовьте одну строку с нужными словами: пробелы в ней превратятся в %20. Список со * использует разделитель своего оператора, например / или &, а не настраиваемый пробел.

Можно ли проверить шаблон URI RFC 6570 регулярным выражением?

Регулярное выражение не проверяет типы значений. Запись {items:3} может быть синтаксически допустима, но префикс нельзя применить, если items — список. Этот инструмент проверяет выражения вместе с JSON и показывает место ошибки.

Можно ли сопоставлять URI с маршрутами с помощью шаблонов URI?

RFC 6570 определяет раскрытие переменных в URI. Обратное восстановление может быть неоднозначным при нескольких переменных, зарезервированных символах или раскрытых словарях. Эта страница не извлекает параметры маршрута из URI; для этого нужен инструмент сопоставления маршрутов.

Нашли проблему?

Проверка шаблонов URI на ваших значениях

Сравните путь или запрос с реальным объектом переменных и сохраните отчёт для текущего результата.

Один шаблон, один объект переменных, проверяемые фрагменты.