URL / URI Tools

expansor de modelos URIconfira cada trecho gerado

Insira um modelo e um objeto JSON para conferir a URI e a contribuição de cada expressão.

expansor de modelos URI

Modelo URI

Variáveis JSON

Os modelos e as variáveis ficam neste navegador. Nenhum endereço informado ou gerado é acessado.

URI expandida

Variáveis omitidas: Nenhuma

Chaves JSON não usadas: Nenhuma

Detalhes das expressões

Linha 1, coluna 24

{/version,resource}
  • Variável: version · Definida
  • Variável: resource · Definida

Trecho expandido: /v1/search

Linha 1, coluna 43

{?q,page,tags*}
  • Variável: q · Definida
  • Variável: page · Definida
  • Variável: tags* · Definida

Trecho expandido: ?q=hello%20world&page=2&tags=red&tags=blue

Exibindo 2 de 2 expressões

Sintaxe de expansão

RFC 6570 nível 4: {var}, {+var}, {#var}, {.var}, {/var}, {;var}, {?var}, {&var}. :n limita o prefixo e * expande listas ou mapas por item.

Limites em unidades UTF-16: modelo 16.384, JSON 65.536, saída 262.144; até 500 expressões.

2 expressões · 0 variáveis omitidas · 75 unidades na saída

Ao montar um endereço de API, uma barra dentro de um ID pode precisar virar %2F, enquanto as barras do caminho devem continuar intactas. O expansor de modelos URI permite testar essas situações com valores reais antes de levar o modelo para o cliente.

Modelos URI também descrevem como listas e mapas viram parâmetros. A expansão segue o RFC 6570 e aceita referências relativas, por isso você pode investigar apenas um caminho ou uma consulta, sem inventar um domínio para completar o endereço.

Por que usar o expansor de modelos URI

Descubra por que um parâmetro sumiu

O expansor de modelos URI relaciona cada expressão à sua posição e ao trecho produzido. Quando um parâmetro não aparece, verifique se a variável está ausente, é null ou contém uma coleção vazia. Uma string vazia tem seu próprio estado, pois continua definida.

Valores coloridos preenchem os espaços correspondentes de um modelo e formam trechos de caminho e consulta.

Veja a diferença que o asterisco faz

{?tags} reúne uma lista em um único valor separado por vírgulas. {?tags*} repete tags para cada item. Um mapa expandido usa as chaves dos membros. Os detalhes deixam essa estrutura visível sem precisar procurar os separadores no endereço inteiro.

Três itens são agrupados em um valor na parte superior e distribuídos em três pares de consulta na inferior.

Acerte as chaves e o formato dos valores

01

Use o nome completo da chave

user.id identifica literalmente a chave "user.id", sem acessar um objeto interno. Sequências percentuais em nomes também não são decodificadas. Mantenha a mesma grafia e as mesmas maiúsculas no modelo e nas variáveis JSON.

02

Compare os exemplos por comportamento

O exemplo de caracteres reservados mantém as barras de um caminho. O exemplo composto mostra listas, mapas e prefixos Unicode. Carregar um exemplo abre uma prévia; depois de aplicar, Desfazer restaura uma vez as entradas e o resultado anterior.

03

Exporte somente após atualizar

A expansão automática espera 350 ms após uma edição. Desative-a para usar o botão ou Ctrl/Cmd + Enter. Alterar os dados bloqueia imediatamente as cópias e os downloads antigos, até que a entrada atual seja expandida com sucesso.

Operadores e valores com diagnóstico completo

Os quatro níveis do padrão

O expansor de modelos URI aceita expansão simples e os operadores +, #, ., /, ;, ? e &. :n limita o valor a 1–9999 caracteres Unicode, enquanto * expande listas e mapas. A codificação percentual e os separadores são determinados pelo operador.

IDs numéricos sem arredondamento

Os números JSON são tratados com sua escrita original. O inteiro 9007199254740993 não passa por ponto flutuante, e -0 ou notação exponencial também não são reescritos. Valores booleanos viram true ou false. O texto das variáveis acompanha o relatório para conferência.

Erros e omissões têm tratamentos diferentes

Erros de sintaxe no modelo e no JSON mostram linha e coluna. Chaves duplicadas são recusadas; valores aninhados são identificados por JSON Pointer. Variáveis indefinidas são omitidas conforme o padrão, sem transformar essa ausência em erro de execução.

Relatório que permite repetir o teste

Copiar entrega apenas a URI. O relatório JSON inclui o modelo, o texto original das variáveis, todas as expressões e os nomes omitidos ou não usados. A página mostra 50 expressões por vez; o download inclui também as que ainda não foram exibidas.

Entradas aceitas e limites da expansão

Um único objeto sem contêineres aninhados
A raiz do JSON deve ser um objeto. Os valores podem ser strings, números, booleanos, null, listas de escalares ou mapas de escalares. Contêineres aninhados são rejeitados mesmo quando não usados. Importação de arquivos e lotes de variáveis ficam fora desta página.
Vazio não é o mesmo que ausente
Chaves ausentes, null e coleções vazias são omitidos; membros null também são ignorados. Uma string vazia produz ?x= com {?x} e ;x com {;x}. Um modelo vazio é permitido quando o JSON de variáveis é válido.
Nomes são identificadores exatos
Maiúsculas e minúsculas diferem. Pontos não percorrem objetos e sequências percentuais nos nomes não são decodificadas nem normalizadas. Chaves repetidas causam erro, em vez de sobrescrever o valor anterior. A ordem de um mapa segue o JSON informado.
Sem correção posterior do endereço
A expansão simples codifica novamente o sinal %, enquanto + e # preservam sequências válidas e caracteres reservados. Espaços literais são inválidos. Unicode usa UTF-8 sem normalização; o sistema não acrescenta protocolo, URL base ou conversão de host.
Tamanhos limitados e nada de exportar pela metade
Os limites são 16.384, 65.536 e 262.144 unidades UTF-16 para modelo, JSON e saída, além de 500 expressões. O parser compartilhado limita profundidade a 100, nós a 50.000 e números a 1.000 caracteres. Uma falha também bloqueia a exportação do resultado anterior.
A transformação segue uma única direção
Não há associação inversa a rotas, verificação de acesso, importação remota, valores padrão ou execução de código. O RFC 6570 fixa os separadores. Para uma composição especial, prepare uma string nas variáveis antes de expandir.

Dúvidas sobre o expansor de modelos URI

As chaves de um modelo URI devem receber codificação percentual?

Mantenha as chaves das expressões: /users/{id} contém uma variável. Já /users/%7Bid%7D contém chaves literais codificadas e não é expandido. Não faça a codificação da URL inteira antes de usar o modelo; o operador cuida da codificação dos valores.

Qual é a diferença entre o operador / e os outros prefixos no RFC 6570?

/ insere uma barra antes de cada variável definida e de cada item de uma lista com *. A expansão simples codifica as barras dentro dos valores. + preserva essas barras, mas não acrescenta uma nova. São comportamentos distintos.

O RFC 6570 permite separar parâmetros opcionais com espaços?

Não existe operador para um separador opcional arbitrário. Prepare uma string com as palavras desejadas; os espaços serão convertidos em %20. Uma lista com * continua usando o separador do operador escolhido, como / ou &.

É possível validar um modelo URI RFC 6570 com uma expressão regular?

Uma expressão regular sozinha não verifica o tipo dos valores. {items:3} pode ter sintaxe válida, mas falha se items for uma lista. Esta ferramenta verifica expressões e variáveis em conjunto, indicando a posição do erro.

Modelos URI podem associar URIs a rotas?

O RFC 6570 define a expansão de variáveis para uma URI. Recuperar os valores pode ser ambíguo com várias variáveis, caracteres reservados ou mapas expandidos. Esta página não extrai parâmetros de rota a partir de uma URI.

Encontrou um problema?

Teste seu caso no expansor de modelos URI

Compare o caminho ou a consulta com seu objeto de variáveis e salve o relatório do resultado atual.

Um modelo, um objeto de variáveis e trechos que podem ser conferidos.