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.