Converter cURL em Fetch e Axios

Cole um comando cURL, confira a requisição normalizada (método, URL, cabeçalhos e corpo) e copie o código cURL, fetch ou axios. O que a página não consegue reproduzir é avisado antes de copiar.

Funciona localmente no seu navegador
Import cURL

Supports common -X, -H, -d, --url, -u, e -b opções. A ferramenta lê apenas o comando colado.

Requisição normalizada
cURL
Import a cURL command or complete the request fields.
Fetch
Import a cURL command or complete the request fields.
Axios
Import a cURL command or complete the request fields.

Revise as requisições geradas antes de executá-las

A conversão preserva método, URL, cabeçalhos e body informados. Verifique credenciais, cookies, redirecionamentos, tratamento de respostas e URLs específicas do ambiente antes de adicionar o código à aplicação.

Como converter um comando cURL em código de requisição

Cole um comando cURL e a página preenche os campos da requisição que ficam acima dos painéis de código: método, URL, um cabeçalho por linha e o corpo. Os três painéis mostram a mesma requisição como comando cURL, como código fetch do navegador e como chamada axios, para você levar para o JavaScript um comando que já testou no terminal.

A leitura, a codificação e a geração do código rodam nesta aba. A página não envia a requisição nem chama a URL: nenhuma requisição sai do navegador enquanto a ferramenta trabalha. Um comando colado costuma trazer cabeçalho Authorization, cookie de sessão ou chave de API, então trate-o como segredo: ele fica na página, mas também continua visível nos campos e no código gerado.

  1. Cole o comando na caixa de cURL ou pule a importação e digite o método, a URL, os cabeçalhos e o corpo. Comandos longos copiados do terminal continuam funcionando: uma barra invertida seguida de quebra de linha é unida.
  2. Clique em Importar cURL. A requisição normalizada aparece acima dos painéis e a lista de métodos passa para o verbo do comando, acrescentando um item novo quando o comando usa um verbo próprio, como -X PURGE.
  3. Leia a linha de status. As opções que o trecho não consegue reproduzir — formulários multipart, uploads, proxies, certificados de cliente, valores lidos de arquivos, cabeçalhos sem dois-pontos — aparecem depois de «Ignorado:» para você saber o que refazer à mão.
  4. Confira a URL, os cabeçalhos e o corpo e clique em Gerar código depois de qualquer edição manual. O painel cURL é remontado a partir dos campos, então uma edição nunca deixa código antigo na tela.
  5. Copie o trecho necessário: Copiar cURL para o comando de shell, ou os painéis fetch e axios para JavaScript, e rode no seu projeto.

O que o importador lê, mantém e ignora

Opções que o importador entende

O importador lê as opções que definem a requisição: -X/--request para o método, -H/--header, -d/--data com as variantes -raw, -binary e -ascii, --data-urlencode, --json, --url, -u/--user para HTTP Basic, -b/--cookie, -A/--user-agent, -e/--referer e -I/--head. As opções curtas aceitam o valor colado, então -XPOST e -H'Accept: text/html' funcionam, e as flags podem ser agrupadas, como em -sS ou -kL. Vários valores -d são unidos com & do mesmo modo que no curl, e --data-urlencode codifica em porcentagem tudo o que está fora do conjunto não reservado, então --data-urlencode 'q=a b&c' gera o corpo q=a%20b%26c.

As flags que só afetam a execução do curl — -o/--output, -m/--max-time, --retry, -L, -k, -s, --compressed, --http2 e semelhantes — são aceitas e ignoradas, porque o código gerado não tem equivalente. O que mudaria a requisição de um jeito que os trechos não conseguem expressar é avisado em vez de descartado em silêncio: -F/--form, -T/--upload-file, -G/--get, -x/--proxy, certificados de cliente, --netrc, valores com @file em -d, -H e -b, um cabeçalho sem dois-pontos e opções desconhecidas entram na lista «Ignorado:».

Como os três trechos são montados

O painel cURL é montado a partir dos campos, não copiado: uma opção por linha com --request, --url, --header para cada cabeçalho e --data para o corpo, com aspas simples em cada valor. O painel fetch emite fetch(url, {…}) com o método, um objeto de cabeçalhos e um corpo; quando um cabeçalho Content-Type contém «json», o corpo é escrito como JSON.stringify({…}) para a requisição manter a forma e, caso contrário, sai como string JSON. O painel axios segue as mesmas regras com método em minúsculas, url, headers e data, então os dois trechos de JavaScript podem ser comparados linha a linha.

O método vem do comando: GET por padrão, POST quando há corpo, e -I define HEAD a menos que um -X explícito o substitua. Nomes de cabeçalho repetidos viram uma única chave no objeto dos painéis fetch e axios, enquanto o painel cURL mantém todas as linhas. A validação da URL aceita o que o navegador consegue chamar: uma URL absoluta com esquema. Se o esquema não for http:// ou https://, os trechos ainda são gerados, mas a linha de status avisa que só o cURL conseguirá executar a requisição.

O que a ferramenta não faz

A conversão é de mão única. Um comando cURL (ou uma requisição digitada por você) vira código cURL, fetch e axios; a página não lê código fetch ou axios para devolvê-lo como comando cURL. Ela também nunca executa a requisição, então aqui não se descobre se um endpoint responde, qual código de status retorna ou se um token ainda é válido.

Há partes de um comando que não passam para um trecho de navegador. O curl consegue ler corpo, cabeçalho ou cookie de um arquivo, montar um formulário multipart, usar um proxy ou apresentar um certificado de cliente; uma página não alcança seu sistema de arquivos nem suas configurações de proxy, e um corpo multipart escrito à mão precisaria de um boundary. Essas opções são listadas em vez de adivinhadas, então o código gerado mantém apenas o que é reproduzível e o resto fica no terminal. Quando um comando usar uma delas, rode o curl para essa parte e use esta página para o que pode ser transportado.

Ferramentas recentes: