Conversor de curl
DevConverta um comando curl em fetch, axios, Python, Go, Java e HTTPie — ao vivo, com abas multilíngues.
URLs remotas não são buscadas; cole seu JSON diretamente.
Nesta página
O que é um conversor de curl?#
curl é a coisa mais próxima que o HTTP tem de uma linguagem universal. Todos os painéis DevTools do navegador, todos os sites de documentação de API e todos os bilhetes de suporte acabam por lhe entregar um comando curl — “copiar como cURL” é como um pedido viaja de um navegador para um bug report. O problema é que um comando curl colado raramente é o que se pode efetivamente correr no seu código. O seu serviço está escrito em Python, ou Go, ou fetch do lado do navegador; não se quer invocar curl pela shell, quer-se a chamada equivalente no cliente HTTP que já usa.
Esta página faz a ponte. Cole um comando curl à esquerda e ele analisa a sintaxe shell — flags, aspas, continuação de linha, cabeçalhos, body, auth — num pedido estruturado, depois emite o código equivalente para seis alvos de uma só vez: fetch do navegador, axios, requests de Python, net/http de Go, HttpURLConnection de Java e httpie. Lê-se ao longo das abas, copia-se a que corresponde à sua stack, e segue-se.
A análise corre inteiramente no seu navegador. O comando que cola nunca toca um servidor, o que importa porque comandos curl reais frequentemente contêm bearer tokens, credenciais de basic-auth, ou cookies assinados.
Como usar#
- Cole o seu comando curl no painel de Entrada à esquerda. Pode colar a palavra inicial
curlou omiti-la; ambos funcionam. Comandos multilinha unidos com\final são compreendidos, tal como comandos copiados diretamente de um terminal onde cada flag fica na sua própria linha. - Clique em Exemplo para carregar um exemplo realista se quiser ver a forma primeiro, ou Limpar para limpar o painel.
- Escolha uma linguagem de destino na barra de abas por cima da saída: fetch, axios, python, go, java ou httpie. Todos os seis são gerados a partir da mesma análise, pelo que mudar de aba é instantâneo — não há re-execução.
- Leia o código gerado no painel. Use Copiar na barra de abas para o recolher.
- Veja a barra de estado por baixo dos painéis. Se o analisador bateu numa flag que não modela (um redirecionamento de output-file, uma definição de proxy), diz-o explicitamente em vez de a largar silenciosamente.
Principais recursos#
- Um verdadeiro tokenizer shell, não regex raspado. Aspas simples, aspas duplas, quoting ANSI-C
$'...'(com escapes\n,\t,\x41,é), continuação de linha com barra invertida-newline, e a diferença entre"a\b"e'a\b'são todos tratados como obashfaria. Conversores ingénuos que partem em espaços partem-se o momento em que um valor de cabeçalho contém um espaço. - Seis alvos de uma análise. Vê
fetch,axios, Python, Go, Java ehttpielado a lado. Se está inseguro se deve ir buscarfetchouaxios, pode comparar o tratamento do mesmo cabeçalho de auth em dois cliques. - Inteligência de body. Quando o pedido transporta
Content-Type: application/json, o emissor Python passa-o como a keywordjson=para que um body em forma de dict seja enviado corretamente; caso contrário recua paradata=. - Basic auth decodificado uma vez. Uma flag
-u user:passtorna-sebtoa("user:pass")em fetch, o blocoauthem axios, o tuploauth=em requests, eSetBasicAuthem Go — cada idiomática como essa linguagem espera. - Flags desconhecidas são reportadas, não engolidas.
-o output.txtou--proxyaparecem na barra de estado comounknown args, para que nunca seja silenciosamente induzido em erro a pensar que uma conversão capturou um redirecionamento ou proxy que afinal largou. - Sem backend, sem fuga. O comando é tokenizado em memória pelo próprio script da página. Não há chamada de rede que leve o seu token colado para lado nenhum.
Exemplo detalhado#
Carregue em Exemplo (ou cole o equivalente ao que os DevTools do navegador produzem quando se faz “Copy as cURL” para um POST JSON):
curl -X POST https://example.com/api/v1/users \
-H 'Authorization: Bearer tok' \
-H 'Content-Type: application/json' \
-d '{"name":"Alice","role":"admin"}'
Mude para a aba fetch e obtém:
const response = await fetch("https://example.com/api/v1/users", {
method: "POST",
headers: {
"Authorization": "Bearer tok",
"Content-Type": "application/json",
},
body: "{\"name\":\"Alice\",\"role\":\"admin\"}",
});
Mude para a aba python. Como Content-Type é JSON, o body passa pela keyword json=:
import requests
url = 'https://example.com/api/v1/users'
headers = {
'Authorization': 'Bearer tok',
'Content-Type': 'application/json',
}
payload = '{"name":"Alice","role":"admin"}'
response = requests.request('POST', url, headers=headers, json=payload)
print(response.status_code)
O mesmo comando está também imediatamente disponível sob as abas go, java, axios e httpie — seis conversões pelo preço de uma colagem.
Perguntas frequentes#
Diz “unknown args” para o meu comando. O que é que saltou?#
O analisador modela as flags curl que se usam para descrever um pedido — método, URL, cabeçalhos, body, basic auth, --compressed, -k, -L. Flags que descrevem o próprio comportamento do curl (como -o para escrever o body num arquivo, --proxy, --connect-timeout, --cert) não são traduzidas, porque não têm equivalente numa chamada fetch. São recolhidas e mostradas na barra de estado para que se saiba que foram largadas deliberadamente, não perdidas.
Posso converter um comando que usa quoting ANSI-C $'...'?#
Sim. Cabeçalhos e bodies copiados de terminais chegam às vezes envolvidos em $'...' para que sequências de escape como \n ou \t sejam interpretadas pela shell. O tokenizer percebe quoting ANSI-C e decodifica \n, \t, \xHH, \uHHHH, \UHHHHHHHH e os escapes simples, pelo que os bytes que o conversor vê correspondem aos bytes que o curl teria enviado.
Porque é que o meu output Python usa json= às vezes e data= outras?#
O emissor olha para os seus cabeçalhos. Quando Content-Type: application/json está presente passa o body pela keyword json=, o que deixa o requests definir o cabeçalho e codificar o payload corretamente. Para qualquer outro content type (form-encoded, texto simples, multipart) recua para data=, porque forçar json= aí estaria errado.
Envia o pedido por mim?#
Não, e isso é deliberado. Esta ferramenta apenas traduz o comando em código; nunca o executa. O excerto gerado corre no seu próprio programa, sob as suas próprias credenciais, onde o pode inspecionar antes de fazer alguma coisa ao vivo.