cURL para Código: Converta Requisições de API Entre Linguagens Instantaneamente
Entenda a sintaxe de flags do cURL, padrões comuns de API REST e como traduzir com precisão comandos cURL para JavaScript fetch, Python requests e Node.js axios — incluindo o fluxo 'Copiar como cURL' das DevTools do navegador.
Toda API tem documentação. Quase universalmente, essa documentação inclui exemplos de código em cURL — o cliente HTTP de linha de comando que vem instalado em todo sistema Unix-like e tem sido a língua franca da documentação de API por décadas. O problema é que você não está escrevendo scripts shell. Você está escrevendo JavaScript, Python, Go ou Ruby, e precisa traduzir esse comando cURL em código funcional antes de poder usá-lo.
Essa tradução é tediosa e propensa a erros. Cabeçalhos, esquemas de autenticação, corpos de requisição e codificação de URL precisam ser mapeados para as chamadas de método corretas na linguagem certa. O Conversor de cURL do BrowseryTools faz isso automaticamente — cole um comando cURL e obtenha o código equivalente em JavaScript fetch, Python requests, Node.js axios e mais. Gratuito, sem cadastro, tudo fica no seu navegador.
O que É o cURL?
cURL (Client URL) é uma ferramenta de linha de comando para transferir dados usando URLs. Suporta HTTP, HTTPS, FTP, WebSockets e dezenas de outros protocolos. Para desenvolvedores, é mais comumente usado como forma de fazer requisições HTTP pelo terminal — testar um endpoint de API, baixar um arquivo ou depurar autenticação.
O cURL está instalado por padrão no macOS e na maioria das distribuições Linux. No Windows, ele vem incluído com o sistema operacional desde o Windows 10. Essa ubiquidade é exatamente por que as equipes de documentação de API usam cURL para exemplos — podem ter certeza de que qualquer desenvolvedor lendo a documentação pode executar o exemplo imediatamente, sem instalar nada.
Anatomia de um Comando cURL
Um comando cURL é construído a partir de uma URL base e um conjunto de flags. Aqui está um exemplo completo que cobre as flags mais importantes:
curl -X POST https://api.example.com/v1/users \
-H "Content-Type: application/json" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
-d '{"name": "Alice", "email": "alice@example.com"}'Detalhando cada flag:
-X POST— define o método HTTP. Os valores válidos são GET, POST, PUT, PATCH, DELETE, etc. Se omitido e-destiver presente, o cURL usa POST por padrão.-H "Cabeçalho: Valor"— adiciona um cabeçalho de requisição. Pode ser repetido várias vezes para múltiplos cabeçalhos.-d '...'— o corpo da requisição. Para JSON, combine com-H "Content-Type: application/json". O cURL codifica o corpo via URL por padrão, a menos que você use--data-raw.--data-raw '...'— envia o corpo exatamente como está, sem nenhuma codificação URL. Necessário quando o corpo contém caracteres como@que o-dinterpretaria de forma especial.-u usuario:senha— atalho de autenticação básica. O cURL codifica como um cabeçalho Authorization em Base64 para você.-s— modo silencioso; suprime a barra de progresso. Quase sempre usado em scripts.-v— modo verboso; exibe cabeçalhos de requisição e resposta. Inestimável para depurar falhas de autenticação.-o nome_arquivo— escreve a saída em um arquivo em vez do stdout.
Padrões Comuns de cURL para APIs REST
Requisição GET com Parâmetros de Query
curl "https://api.example.com/users?page=2&limit=20" \ -H "Authorization: Bearer TOKEN"
Os parâmetros de query vão diretamente na URL. Coloque aspas em toda a URL para evitar que o shell interprete o & como um operador de processo em segundo plano.
POST com Corpo JSON
curl -X POST https://api.example.com/orders \
-H "Content-Type: application/json" \
-H "X-API-Key: your-api-key" \
--data-raw '{"product_id": 42, "quantity": 3}'Upload de Arquivo (multipart/form-data)
curl -X POST https://api.example.com/upload \ -H "Authorization: Bearer TOKEN" \ -F "file=@/path/to/document.pdf" \ -F "description=Q4 Report"
A flag -F envia multipart/form-data. O prefixo @ significa "ler do arquivo". Esse é o formato usado para uploads de imagens, APIs de processamento de documentos e qualquer endpoint que aceite dados binários.
Convertendo cURL para JavaScript fetch
// cURL original:
// curl -X POST https://api.example.com/v1/users \
// -H "Content-Type: application/json" \
// -H "Authorization: Bearer TOKEN" \
// -d '{"name": "Alice", "email": "alice@example.com"}'
const response = await fetch("https://api.example.com/v1/users", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer TOKEN",
},
body: JSON.stringify({
name: "Alice",
email: "alice@example.com",
}),
});
const data = await response.json();Convertendo cURL para Python requests
import requests
response = requests.post(
"https://api.example.com/v1/users",
headers={
"Authorization": "Bearer TOKEN",
},
json={
"name": "Alice",
"email": "alice@example.com",
},
)
data = response.json()O parâmetro json= da biblioteca requests lida tanto com a serialização quanto com a definição automática do cabeçalho Content-Type: application/json — sem necessidade de definir manualmente.
Convertendo cURL para Node.js com axios
const axios = require("axios");
const response = await axios.post(
"https://api.example.com/v1/users",
{
name: "Alice",
email: "alice@example.com",
},
{
headers: {
Authorization: "Bearer TOKEN",
},
}
);
const data = response.data;Como "Copiar como cURL" Funciona nas DevTools do Navegador
Um dos recursos mais úteis nas DevTools do navegador é "Copiar como cURL". No Chrome, Firefox ou Safari: abra as DevTools, vá para a aba Rede, faça uma requisição (entre na conta, clique em um botão, carregue uma página), clique com o botão direito na requisição na lista de rede e selecione "Copiar como cURL".
O navegador gera um comando cURL completo que inclui cada cabeçalho que o navegador enviou — incluindo cookies, tokens de sessão, tokens CSRF e qualquer outro material de autenticação. Isso significa que você pode reproduzir exatamente a requisição que o navegador fez, incluindo todo o seu contexto de autenticação, do terminal ou do código.
Isso é inestimável para depuração: se a requisição do navegador funciona, mas a requisição do seu código falha, cole ambas em um diff e encontre a diferença no cabeçalho ou no corpo. Você também pode colar o cURL copiado diretamente no Conversor de cURL do BrowseryTools para obter o código equivalente na sua linguagem preferida — o conversor lida com todo o escape, citação e tradução de flags automaticamente.
Resumo
O cURL é a linguagem universal do HTTP. A documentação de APIs o usa porque todos podem executá-lo. As DevTools o copiam porque captura todos os detalhes de uma requisição. Aprender a ler cURL fluentemente — e a traduzi-lo com precisão para qualquer linguagem em que você está trabalhando — é uma habilidade prática que rende dividendos toda vez que você integra uma nova API. Pule a tradução manual tediosa e use o Conversor de cURL do BrowseryTools para obter código limpo e executável em segundos.
Try the Tools — 100% Free, No Sign-Up
Everything runs in your browser. No uploads. No accounts. No ads.
Explore All Tools →