Back

Comandos curl Básicos que Todo Desenvolvedor Web Deveria Conhecer

Comandos curl Básicos que Todo Desenvolvedor Web Deveria Conhecer

Novo no curl? Comece com nosso guia para iniciantes: Fazendo Requisições HTTP com curl

Ao debugar APIs ou testar endpoints, você precisa de ferramentas rápidas e confiáveis que não exigem configuração complexa. Embora ferramentas GUI como Postman tenham seu lugar, os comandos curl para desenvolvedores web oferecem velocidade e flexibilidade incomparáveis para testes via linha de comando. Esta referência cobre os comandos curl essenciais que você usará diariamente, desde requisições GET básicas até padrões avançados de autenticação.

Principais Pontos

  • Domine primeiro as requisições GET e POST básicas—elas cobrem 80% das necessidades de teste de API
  • Sempre inclua cabeçalhos apropriados para Content-Type e Authorization
  • Use o modo verbose (-v) ao debugar problemas de conexão
  • Configure timeouts para evitar scripts travados em ambientes de produção
  • Salve respostas em arquivos para análise e comparação
  • Siga redirecionamentos com -L para cadeias completas de requisições
  • Combine curl com ferramentas como jq para melhor manipulação de JSON

Comandos curl Essenciais para Teste de API

1. Requisição GET Básica

O comando curl mais simples busca dados de qualquer URL:

curl https://api.github.com/users/octocat

Isso retorna a resposta JSON bruta. Para melhor legibilidade, redirecione a saída através de um formatador JSON:

# macOS/Linux
curl https://api.github.com/users/octocat | jq

# Windows (requer instalação do jq)
curl https://api.github.com/users/octocat | jq

Quando usar: Teste rápido de endpoints de API, verificar se serviços estão respondendo, ou obter dados para scripts.

2. Requisição POST com Dados JSON

APIs modernas esperam payloads JSON. Veja como enviá-los adequadamente:

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"name":"John Doe","email":"john@example.com"}' \
  https://api.example.com/users

Para JSON complexo, salve-o em um arquivo e referencie-o:

curl -X POST \
  -H "Content-Type: application/json" \
  -d @user-data.json \
  https://api.example.com/users

Quando usar: Criar recursos, enviar formulários, ou testar endpoints POST com dados estruturados.

3. Adicionando Cabeçalhos Personalizados

APIs frequentemente requerem cabeçalhos específicos para autenticação, negociação de conteúdo, ou parâmetros personalizados:

curl -H "Authorization: Bearer your-token-here" \
     -H "Accept: application/json" \
     -H "User-Agent: MyApp/1.0" \
     https://api.example.com/protected-resource

Quando usar: Autenticação de API, definir user agents, especificar formatos de resposta, ou adicionar cabeçalhos personalizados da aplicação.

4. Seguindo Redirecionamentos

Por padrão, curl para em redirecionamentos. Use -L para segui-los automaticamente:

curl -L https://bit.ly/shortened-url

Limite saltos de redirecionamento para evitar loops infinitos:

curl -L --max-redirs 5 https://example.com

Quando usar: Testar URLs encurtadas, seguir redirecionamentos de API, ou verificar cadeias de redirecionamento em suas aplicações.

5. Salvando Resposta em Arquivo

Em vez de poluir seu terminal, salve respostas diretamente em arquivos:

# Salvar com nome de arquivo original
curl -O https://example.com/data.json

# Salvar com nome de arquivo personalizado
curl -o my-data.json https://api.example.com/export

# Salvar cabeçalhos e corpo separadamente
curl -D headers.txt -o response.json https://api.example.com/data

Quando usar: Baixar arquivos, salvar respostas de API para análise, ou arquivar resultados de teste.

6. Autenticação Básica

Muitas APIs ainda usam autenticação básica. Manipule-a com segurança:

curl -u username:password https://api.example.com/secure-endpoint

Para melhor segurança, deixe o curl solicitar a senha:

curl -u username https://api.example.com/secure-endpoint

Quando usar: Testar APIs internas, acessar endpoints de desenvolvimento, ou trabalhar com sistemas de autenticação legados.

7. Saída Verbose para Debug

Quando requisições falham ou se comportam de forma inesperada, o modo verbose mostra exatamente o que está acontecendo:

curl -v https://api.example.com/endpoint

Isso exibe:

  • Cabeçalhos de requisição enviados
  • Cabeçalhos de resposta recebidos
  • Detalhes do handshake SSL/TLS
  • Informações de conexão

Quando usar: Debugar requisições falhadas, entender comportamento de API, ou solucionar problemas de SSL.

8. Configurando Timeouts

Previna requisições travadas definindo timeouts de conexão e total:

# Timeout de conexão de 10 segundos, timeout total de 30 segundos
curl --connect-timeout 10 --max-time 30 https://slow-api.example.com

Quando usar: Testar endpoints lentos, prevenir travamento de scripts, ou trabalhar com redes não confiáveis.

9. Envio de Dados de Formulário

Para envios de formulário tradicionais ou uploads de arquivo:

# Dados de formulário padrão
curl -X POST -d "username=john&password=secret" https://example.com/login

# Upload de arquivo
curl -F "file=@document.pdf" -F "description=Important doc" https://example.com/upload

Quando usar: Testar endpoints de formulário, fazer upload de arquivos, ou trabalhar com dados multipart.

10. Incluindo Cabeçalhos de Resposta

Veja tanto cabeçalhos quanto corpo na saída:

# Incluir cabeçalhos com resposta
curl -i https://api.example.com/endpoint

# Apenas cabeçalhos (útil para verificar códigos de status)
curl -I https://api.example.com/endpoint

Quando usar: Verificar códigos de resposta, debugar problemas de cache, ou examinar cabeçalhos de API.

Comandos curl Avançados para Desenvolvedores Web

Trabalhando com Cookies

Mantenha estado de sessão entre requisições:

# Salvar cookies em arquivo
curl -c cookies.txt https://example.com/login

# Usar cookies salvos
curl -b cookies.txt https://example.com/dashboard

Configuração de Proxy

Roteie requisições através de proxies para teste ou segurança:

curl --proxy http://proxy.company.com:8080 https://api.example.com

Manipulação de Certificados SSL

Para ambientes de desenvolvimento com certificados auto-assinados:

# Pular verificação de certificado (apenas desenvolvimento)
curl -k https://localhost:8443/api

# Usar certificado CA personalizado
curl --cacert custom-ca.pem https://secure-api.example.com

Dicas de Performance e Automação

Operações em Lote

Teste múltiplos endpoints eficientemente:

# Múltiplas URLs em um comando
curl https://api1.example.com https://api2.example.com

# A partir de um arquivo
curl -K url-list.txt

Formatação de Saída

Torne respostas mais legíveis:

# Pretty-print JSON com jq
curl -s https://api.example.com/data | jq '.'

# Extrair campos específicos
curl -s https://api.example.com/users | jq '.[] | .name'

Tratamento de Erros

Faça curl falhar silenciosamente em erros HTTP para scripting:

curl --fail --silent https://api.example.com/endpoint || echo "Request failed"

curl vs. Outras Ferramentas: Quando Usar O Quê

Use curl quando:

  • Teste rápido via linha de comando
  • Scripting e automação
  • Integração com pipeline CI/CD
  • Uso mínimo de recursos do sistema

Use Postman quando:

  • Coleções complexas de requisições
  • Colaboração em equipe
  • Inspeção visual de respostas
  • Fluxos de teste avançados

Use HTTPie quando:

  • Sintaxe mais legível preferida
  • Teste de API JSON-first
  • Melhor formatação padrão

Perguntas Frequentes

Use a opção limit-rate para controlar requisições, por exemplo limitando a 200 kilobytes por segundo. Você também pode adicionar atrasos entre requisições em scripts usando comandos sleep.

A flag -d envia dados como form-encoded, que é o padrão para requisições POST. A flag -F envia dados como multipart form data, que é necessário ao fazer upload de arquivos.

Sim. Para isso, envie uma requisição POST com um payload JSON que inclua sua query GraphQL.

Use o modo verbose para inspecionar o handshake SSL, pule a verificação de certificado temporariamente se necessário usando a flag insecure, ou especifique uma autoridade certificadora personalizada com a opção cacert.

Para autenticação baseada em token, passe o cabeçalho Authorization com seu token. Para autenticação básica, use a opção username e password. Para melhorar a segurança, armazene valores sensíveis em variáveis de ambiente e referencie-os em seus comandos.

Conclusão

Estes comandos curl formam a base do teste de API via linha de comando. Comece com requisições GET e POST básicas, depois incorpore gradualmente cabeçalhos, autenticação e recursos avançados conforme suas necessidades crescem. A chave é construir memória muscular para os padrões mais comuns—uma vez que você conseguir testar endpoints rapidamente pelo terminal, você se verá recorrendo ao curl constantemente durante desenvolvimento e debug.

Os comandos curl para desenvolvedores web fornecem a base para teste e debug eficiente de APIs. Estes comandos funcionam em todas as plataformas e se integram perfeitamente aos fluxos de trabalho de desenvolvimento, tornando-os ferramentas essenciais para o kit de qualquer desenvolvedor web.

Listen to your bugs 🧘, with OpenReplay

See how users use your app and resolve issues fast.
Loved by thousands of developers