AZ Tools

Expansor de Modelos URI (RFC 6570)

Rede

Os modelos URI do RFC 6570 descrevem como construir uma URL a partir de variáveis, e estão por toda parte: a API do GitHub, os modelos de caminho do OpenAPI/Swagger e os links de hipermídia (HAL/JSON-LD) os usam. Um modelo como `https://api.example.com{/version}/users{/id}{?fields*,page}` é expandido contra um conjunto de variáveis em uma URL real. Esta ferramenta implementa os quatro níveis da especificação — expansão simples `{var}`, os operadores reservado (`{+var}`) e fragmento (`{#var}`), rótulo (`.`), caminho (`/`), parâmetro estilo-caminho (`;`), consulta de formulário (`?`) e continuação (`&`) — além dos modificadores explode (`*`) e prefixo (`:n`) e o tratamento correto de valores vazios e indefinidos. Forneça as variáveis como um objeto JSON cujos valores sejam strings, números, listas ou mapas chave/valor; a saída é codificada em porcentagem exatamente como o operador exige. É verificada contra a suíte completa de exemplos do RFC 6570. Tudo roda localmente — nada é enviado.

URL expandida

https://api.example.com/v2/users/42?fields=name&fields=email&page=1

Implementa os quatro níveis do RFC 6570: operadores + : # . / ; ? & com modificadores explode (*) e prefixo (:n).

Como usar

  1. Digite um modelo URI com {chaves}, ex.: {/path}{?query*}.
  2. Forneça as variáveis como objeto JSON (strings, números, arrays ou objetos).
  3. Leia a URL expandida e copie-a; ajuste o modelo ou as variáveis para ver o resultado ao vivo.

Perguntas frequentes

O que os operadores significam?
O primeiro caractere dentro das chaves escolhe um operador: nenhum = valores simples unidos por vírgulas; `+` mantém caracteres reservados sem escapar; `#` faz um fragmento; `.` um rótulo; `/` segmentos de caminho; `;` parâmetros estilo-caminho `;name=value`; `?` uma consulta de formulário `?name=value`; `&` uma continuação de consulta. Cada um controla seu separador e se os nomes são incluídos.
O que `*` e `:n` fazem?
`*` é o modificador explode: uma lista ou mapa expande em componentes separados (ex.: `{?list*}` → `?list=a&list=b` em vez de `?list=a,b`). `:n` é um modificador de prefixo que trunca um valor de string aos primeiros n caracteres antes de codificar (ex.: `{var:3}` de `value` → `val`).
Como passo listas e mapas?
Use JSON: uma lista é um array (`"fields": ["name","email"]`) e um mapa associativo é um objeto (`"keys": {"semi": ";"}`). Strings e números são escalares. Uma variável ausente, null, lista vazia ou objeto vazio é tratada como indefinida e não contribui em nada para a saída.
A codificação está correta?
Sim — os valores são codificados em porcentagem conforme o conjunto permitido do operador. Os operadores simples e a maioria codificam tudo fora do conjunto não reservado, enquanto `+` e `#` também deixam passar os caracteres URL reservados (e os trios %XX existentes), igual ao RFC 6570. A implementação passa na tabela completa de exemplos da especificação.

Ferramentas relacionadas