DevTools

Cheatsheet cURL

Ferramenta para transferência de dados

Voltar às linguagens
cURL
34 cards encontrados
Categorias:
Versões:

Pedidos Básicos


5 cards
GET simples
curl https://api.exemplo.com

# Guardar resposta em ficheiro
curl https://site.com -o pagina.html

# Seguir redirecionamentos
curl -L http://site.com

Pedido GET básico.

Timeout e retry
# Timeout de ligação (5s)
curl --connect-timeout 5 url

# Timeout total (30s)
curl --max-time 30 url

# Repetir em falha
curl --retry 3 --retry-delay 2 url

Controlo de tempo.

Ver só headers
# Apenas cabeçalhos
curl -I https://site.com

# Headers + corpo
curl -i https://site.com

# Só o código de status
curl -o /dev/null -s -w "%{http_code}" url

Inspecionar resposta.

Modo silencioso
# Sem barra de progresso
curl -s https://api.com

# Silencioso mas mostra erros
curl -sS https://api.com

# Mostrar erros detalhados
curl -sS --show-error url

Controlar output.

Parâmetros de query
# Na URL diretamente
curl "https://api.com/busca?q=node&p=2"

# Com --data-urlencode
curl -G https://api.com/busca
  --data-urlencode "q=olá mundo"
  --data-urlencode "p=2"

Query strings (GET).

Métodos HTTP


4 cards
POST
curl -X POST https://api.com/users

# Com dados de formulário
curl -X POST https://api.com/users
  -d "nome=Ana&email=ana@mail.com"

Enviar pedido POST.

PUT e PATCH
# PUT (substituir)
curl -X PUT https://api.com/users/1
  -d "nome=Ana Silva"

# PATCH (atualizar parcial)
curl -X PATCH https://api.com/users/1
  -d "email=novo@mail.com"

Atualizar recursos.

DELETE
curl -X DELETE https://api.com/users/1

# Com autenticação
curl -X DELETE https://api.com/users/1
  -H "Authorization: Bearer TOKEN"

Eliminar recursos.

Definir método qualquer
# Método personalizado
curl -X OPTIONS https://api.com

# HEAD
curl -I https://api.com

# Qualquer verbo
curl -X CUSTOM https://api.com

Opção -X / --request.

Headers e Autenticação


4 cards
Enviar headers
curl https://api.com
  -H "Content-Type: application/json"
  -H "Accept: application/json"
  -H "X-API-Key: abc123"

# Remover header
curl url -H "User-Agent:"

Opção -H / --header.

Basic Auth
# user:password
curl -u usuario:senha https://api.com

# Só utilizador (pede senha)
curl -u usuario https://api.com

Autenticação básica.

Bearer Token
curl https://api.com/privado
  -H "Authorization: Bearer SEU_TOKEN"

Autenticação por token (JWT/OAuth).

User-Agent e Referer
# User-Agent personalizado
curl url -A "MeuApp/1.0"

# Referer
curl url -e "https://origem.com"

# Cookies via header
curl url -H "Cookie: id=123"

Identificação do cliente.

Enviar Dados


4 cards
JSON no corpo
curl -X POST https://api.com/users
  -H "Content-Type: application/json"
  -d '{
    "nome": "Ana",
    "email": "ana@mail.com"
  }'

Enviar payload JSON.

JSON de ficheiro
# Ler corpo de ficheiro
curl -X POST https://api.com/users
  -H "Content-Type: application/json"
  -d @dados.json

Usar ficheiro como corpo.

Formulário (form-data)
# multipart/form-data
curl -X POST https://api.com/upload
  -F "nome=Ana"
  -F "foto=@foto.jpg"

Dados de formulário.

URL-encoded
# application/x-www-form-urlencoded
curl -X POST https://api.com/login
  --data-urlencode "user=ana"
  --data-urlencode "pass=a b c"

# -d codifica automaticamente

Dados codificados.

Download e Upload


4 cards
Download de ficheiro
# Nome original (-O maiúsculo)
curl -O https://site.com/foto.jpg

# Nome personalizado
curl -o imagem.png https://site.com/f

# Vários ficheiros
curl -O url1 -O url2

Descarregar ficheiros.

Retomar download
# Continuar transferência (-C -)
curl -C - -O https://site.com/grande.zip

Retomar downloads interrompidos.

Upload de ficheiro
# Upload via form
curl -X POST https://api.com/upload
  -F "ficheiro=@documento.pdf"

# Upload binário (PUT)
curl -X PUT https://api.com/file
  --data-binary @foto.jpg

Enviar ficheiros.

FTP
# Download via FTP
curl -u user:pass ftp://server/f.txt

# Upload via FTP
curl -u user:pass -T local.txt
  ftp://server/remoto.txt

Transferências FTP.

Debug e Inspeção


4 cards
Verbose
# Detalhes da ligação
curl -v https://site.com

# Só trace de envio/receção
curl --trace - https://site.com

# Trace para ficheiro
curl --trace log.txt url

Diagnóstico detalhado.

Ver pedido enviado
# Mostrar request sem enviar
curl --trace-ascii - url

# Headers do pedido
curl -v url 2>&1 | grep ">"

Inspecionar o request.

Informações da resposta
# Variáveis com -w
curl -s -o /dev/null -w \
  "Status: %{http_code}\n
   Tempo: %{time_total}s\n
   Tamanho: %{size_download}\n" url

Métricas do pedido.

Tempo por fase
curl -s -o /dev/null -w \
  "DNS: %{time_namelookup}\n
   Ligação: %{time_connect}\n
   TTFB: %{time_starttransfer}\n
   Total: %{time_total}\n" url

Análise de performance.

Recursos Avançados


4 cards
Cookies
# Guardar cookies
curl -c cookies.txt https://site.com

# Enviar cookies
curl -b cookies.txt https://site.com

# Cookie manual
curl -b "sessao=abc" url

Gestão de cookies.

Redirects
# Seguir redirects
curl -L http://site.com

# Máximo de redirects
curl -L --max-redirs 5 url

# Ver destino final
curl -L -o /dev/null -w "%{url_effective}" url

Seguir redirecionamentos.

SSL / TLS
# Ignorar certificado (teste)
curl -k https://self-signed.com

# Certificado específico
curl --cacert cert.pem url

# Forçar versão TLS
curl --tlsv1.2 url

Segurança SSL.

Proxy
# Usar proxy
curl -x http://proxy:8080 url

# Proxy com autenticação
curl -x http://user:pass@proxy:8080 url

# Sem proxy para host
curl --noproxy "localhost" url

Ligação via proxy.

Formatação e Truques


5 cards
Formatar JSON com jq
# Formatado e colorido
curl -s https://api.com/users | jq

# Extrair campo
curl -s url | jq '.data.nome'

# Array de nomes
curl -s url | jq '.[].nome'

Processar respostas JSON.

Boas práticas
• Usar -s em scripts (sem progresso)
• Sempre -L se houver redirects
• Verificar %{http_code} em automação
• Usar -k só em testes locais
• Proteger tokens (não em histórico)
• Preferir --data-urlencode para dados

Convenções de uso.

Guardar headers em ficheiro
# Headers separados
curl -D headers.txt -o corpo.html url

# Só headers
curl -sI url > headers.txt

Separar headers e corpo.

Múltiplos pedidos
# Sequência de URLs
curl "https://api.com/page[1-3]"

# Padrão de nomes
curl -O "https://site.com/img[01-10].png"

URLs em sequência.

Config file (.curlrc)
# ~/.curlrc
-H "Accept: application/json"
--connect-timeout 10
-L

# Usar config específico
curl --config meu.curlrc url

Predefinições persistentes.