Config JSON

URL

O que o JSON para URL faz?

Você tem um objeto JSON descrevendo as partes de um endpoint HTTP — protocolo, host, path, parâmetros de query, hash — e precisa dele como uma única string de URL que fetch(), curl ou seu cliente HTTP consiga engolir. Cole o JSON à esquerda, receba a URL montada e codificada em porcentagem à direita. É a mesma direção que toda fixture de teste backend, todo exemplo de OpenAPI e todo arquivo de configuração precisa fazer cedo ou tarde.

Usa o construtor URL nativo do navegador e o URLSearchParams para montar a URL, então a codificação é exatamente o que o padrão URL do WHATWG define e exatamente o que um navegador real enviaria. Espaços na query viram +, colchetes viram %5B/%5D, acentos e emojis são codificados em porcentagem UTF-8. Chaves repetidas na query são suportadas via array — "tag": ["red", "blue"] emite tag=red&tag=blue.

Esta página existe porque a maioria dos projetos já guarda URLs como JSON em algum lugar — arquivos de ambiente, coleções do Postman, fixtures do Cypress, specs OpenAPI, valores Helm. Quando você precisa desse JSON como string de URL real para um script ou um curl pontual, costurar à mão é onde os bugs se escondem. A conversão segue a RFC 3986 para a sintaxe de URL e aceita JSON padrão segundo a RFC 8259 na entrada. Tudo roda localmente — o JSON e a URL nunca saem do seu navegador. A direção contrária mora em URL para JSON.

Como Converter JSON em URL

Três passos. Cada um corresponde a um botão desta página.

1

Cole um config JSON ou carregue o exemplo

Solte à esquerda um objeto JSON descrevendo as partes da URL. protocol e host são os únicos campos obrigatórios; o resto é opcional. Clique em Exemplo para carregar um endpoint realista de e-commerce com vários parâmetros de query e um hash:

{
  "protocol": "https",
  "host": "api.shop.example.com",
  "pathname": "/v1/orders",
  "searchParams": {
    "customer": "Ava Chen",
    "status": "active",
    "total[gte]": "49.99",
    "page": "2"
  },
  "hash": "summary"
}

Campos opcionais: port, username, password, pathname, searchParams, hash. Dentro de searchParams, uma string é um valor único; um array são chaves repetidas. A sintaxe JSON é parseada com JSON.parse — sem comentários, sem vírgulas finais.

2

Leia a URL montada

O painel da direita atualiza enquanto você digita. Você verá a URL completa — https://api.shop.example.com/v1/orders?customer=Ava+Chen&status=active&total%5Bgte%5D=49.99&page=2#summary — com cada parte codificada em porcentagem do jeito que o padrão URL define. Jogue direto numa chamada fetch(), num comando curl, num teste do Postman ou num arquivo de config que espera uma única string de URL.

3

Copie ou baixe

Clique em Copiar para mandar a URL para a área de transferência, ou em Baixar para salvá-la como arquivo de texto. Use Limpar no painel de entrada para começar do zero com um novo config.

Quando você realmente vai usar isso

Transformar exemplos de OpenAPI em comandos curl executáveis

Specs OpenAPI descrevem servidores como {url, variables} e operações como paths com parameters. Compor a URL de fato a partir dessas peças à mão para um curl pontual é chato — substituir variáveis de path, codificar parâmetros, acertar a barra final. Coloque o JSON já mesclado aqui, copie a URL e cole no curl. A forma mesclada bate com o que o server-object do OpenAPI descreve.

Construir URLs a partir de variáveis de ambiente fragmentadas

Uma app 12-factor guarda as partes da URL em variáveis de ambiente separadas: API_HOST, API_PORT, API_BASE_PATH, API_TOKEN_PARAM. Para produzir a URL completa de um curl de checagem durante uma resposta a incidente, você junta tudo. Cole a forma JSON nesta página, receba a URL e execute. Mais rápido que scriptar em bash e sem o risco de esquecer de codificar um token com +.

Fixtures de Cypress e Playwright que guardam URLs como objetos

Fixtures de teste costumam guardar URLs de requisição numa forma estruturada para que partes individuais (o path param orderId, o query param page) possam ser asserted. Quando o fixture também precisa fazer uma chamada HTTP real (por exemplo para semear dados via cy.request ou page.goto), a forma estruturada precisa virar string. JSON para URL transforma o objeto fixture salvo do Marco Rivera na URL que o test harness consegue acessar.

URLs de webhook montadas a partir de configs por tenant

Sistemas multi-tenant guardam configs de webhook por cliente: {host: "hooks.tenant-a.example.com", pathname: "/orders/ORD-1001/notify", searchParams: {token: "..."}}. O dispatcher lê o JSON e precisa de uma string de URL para fazer POST. Mesma conversão que esta página faz, só que em runtime. Use a página para verificar se a URL que seu código vai produzir bate com a que o cliente registrou.

Perguntas frequentes

Qual a diferença entre isto e a página URL Builder?

Mesmo motor, enquadramento diferente. O URL Builder é para o caso em que você senta para montar uma URL do zero — está compondo uma requisição. JSON para URL é para o caso em que o JSON já existe em algum lugar (um config, uma spec OpenAPI, um fixture, um split de variáveis de ambiente) e você precisa convertê-lo na string de URL que um pedaço de código espera. Escolha o enquadramento que combina com o que está fazendo — a saída é idêntica.

Meu JSON guarda a URL diferente — posso usar qualquer formato?

Ele precisa dos nomes de partes de URL do padrão WHATWG: protocol, host, port, username, password, pathname, searchParams (objeto), hash. Se seu JSON usa outras chaves (scheme, baseUrl, query, fragment), renomeie antes. O formato espelha o que new URL(...) expõe e o que a spec URL define, então você fica alinhado com o mesmo modelo que fetch e Node usam internamente.

Como envio um parâmetro de query duas vezes (ex.: ?tag=red&tag=blue)?

Use um array como valor: "tag": ["red", "blue"]. O conversor emite tag=red&tag=blue na ordem em que você forneceu. Isso bate com a forma como URLSearchParams lida com chaves repetidas e é o que a maioria dos servidores (Express, Rails, ASP.NET) espera para query params em formato de array.

Por que meu espaço vira + em vez de %20?

Espaços no componente de query são codificados como + pelas regras do application/x-www-form-urlencoded — é o que o URLSearchParams emite. Espaços no path são codificados como %20. Os dois são válidos pela RFC 3986 e todos os servidores decodificam qualquer das formas. Se seu servidor só aceita %20 na query, o bug está no servidor.

Posso incluir credenciais (username/password) na URL?

Sim — defina "username" e "password" no JSON. Eles aparecem antes do host como user:pass@host. A RFC 3986 §3.2.1 alerta contra isso em URLs de produção porque acabam parando em histórico de navegador, logs de servidor e caches de proxy — beleza para um teste local rápido, não beleza em configs compartilhados.

A URL chega a sair do meu navegador?

Não. O parsing do JSON é JSON.parse na sua aba; a montagem da URL é new URL(...) na sua aba; nenhum dos dois chama servidor. Sem upload, sem logging. Você pode abrir a página uma vez com internet, desconectar e seguir usando pelo cache.

Outras ferramentas de URL e JSON

JSON para URL é metade do caminho de ida e volta. Aqui está o resto do kit: