Conversor de fetch para curl
Cole uma chamada fetch() do JavaScript e converta-a na hora em um comando curl equivalente. O conversor lê a URL, o método, os cabeçalhos e o corpo da requisição do seu código fetch() e imprime um comando curl limpo e pronto para copiar, com escape de shell correto. Tudo roda no seu navegador, o código é analisado como texto e a requisição nunca é enviada.
O conversor de fetch para curl da ToolsSoup transforma uma chamada fetch() do JavaScript em um comando curl equivalente com um clique. Cole um trecho fetch() do seu código, da aba de rede do navegador ou da documentação de uma API, e a ferramenta lê a URL, o método, os cabeçalhos e o corpo da requisição e os reescreve como um comando curl pronto para executar. Ela mapeia o método para -X, cada cabeçalho para um -H e o corpo para -d, com escape de aspas simples correto para que o comando possa ser colado direto no terminal. O código é analisado como texto e nunca é executado, e a requisição nunca é enviada, então tudo permanece no seu navegador.
O que o conversor de fetch para curl faz?
A API fetch() do JavaScript e um comando curl descrevem a mesma requisição HTTP em duas linguagens diferentes. Este conversor é o inverso de uma ferramenta de curl para fetch: ele lê uma chamada fetch() e a reescreve como curl. Ele extrai a URL do primeiro argumento e, em seguida, lê o objeto de opções para obter o método, os cabeçalhos e o corpo. O método HTTP vira -X (e é omitido em um GET simples), cada cabeçalho vira um -H próprio e o corpo vira -d. Quando o corpo é escrito como JSON.stringify de um objeto, o JSON interno é emitido como dado do curl, para que o comando envie a mesma carga que a sua chamada fetch() enviaria.
Como converter fetch para curl
Transforme uma chamada fetch() em um comando curl em poucos segundos:
- Cole a sua chamada fetch() completa na caixa de entrada, incluindo a string da URL e o objeto de opções.
- Clique em Converter para curl para gerar o comando equivalente.
- Revise o comando curl, o método -X, os cabeçalhos -H e o corpo -d no painel de saída.
- Copie o comando e cole-o direto no seu terminal.
Quais formatos de fetch() são suportados?
O conversor lida com os formatos de requisição que você escreve com mais frequência. A URL é obtida do primeiro argumento de texto de fetch(). No objeto de opções ele lê um método em texto, um valor de cabeçalhos escrito como objeto literal (ou como uma chamada new Headers({...}), ou como um array de pares chave/valor) e um corpo escrito como literal de texto ou como JSON.stringify de um objeto. Para um corpo JSON.stringify, o objeto interno é emitido como dado JSON compacto. Aspas simples, aspas duplas, template literals e caracteres com escape nas suas strings são todos decodificados corretamente antes de receberem o escape de shell para o curl.
Por que usar este conversor de fetch para curl?
- Analisa a sua chamada fetch() como texto e nunca a executa, então o código colado não pode rodar.
- Mapeia o método para -X, os cabeçalhos para -H e o corpo para -d em um comando curl limpo.
- Lida com cabeçalhos como objeto literal, chamada Headers() ou array de pares chave/valor.
- Emite o JSON interno de um corpo JSON.stringify como dado do curl.
- Faz o escape dos valores com aspas simples corretas para que o comando seja seguro para colar.
- Roda inteiramente no seu navegador e nunca envia a requisição a lugar nenhum.
Perguntas frequentes
Esta ferramenta executa o meu código fetch() ou envia a requisição?
Não. O conversor lê a sua chamada fetch() como texto puro e a analisa; ele nunca avalia o código nem faz a requisição HTTP. Como nada é executado ou enviado a partir desta página, a ferramenta funciona totalmente no navegador, sem limites de origem cruzada ou de rede.
Como ele escolhe o método do curl?
Se o objeto de opções incluir um método, esse valor é usado como -X. Um GET simples é omitido, já que o curl usa GET por padrão, o que mantém o comando curto. Qualquer outro método, como POST, PUT, PATCH ou DELETE, é escrito explicitamente com -X.
Como os corpos de requisição são tratados?
Um corpo em texto vira o dado -d como está. Um corpo escrito como JSON.stringify de um objeto é decodificado em JSON compacto e emitido como dado -d, para que o comando curl envie a mesma carga. Objetos com chaves sem aspas ou com aspas simples são primeiro normalizados em JSON válido.
Quais formatos de cabeçalho ele entende?
Cabeçalhos escritos como objeto literal, como { \u0022Content-Type\u0022: \u0022application/json\u0022 }, são totalmente suportados, incluindo um envoltório new Headers({ ... }). Um array de pares [chave, valor] também é tratado. Cada cabeçalho vira o seu próprio -H 'Chave: Valor' na saída.
Por que os valores são envolvidos em aspas simples?
O curl roda em um shell, então valores que contêm espaços ou caracteres especiais precisam de aspas. O conversor envolve cada valor de cabeçalho e de corpo em aspas simples e usa o truque padrão '\u005c'' para escapar qualquer aspa simples interna, que é a forma mais segura de passar texto arbitrário ao curl.