Lição 2
Headers, métodos e corpos
Mapeie opções `-X`, `-H` e `-d` para um modelo claro de requisição HTTP.
A maior parte da conversão de cURL para código gira em torno de três conceitos: método, headers e corpo.
Método
-X ou --request define o método HTTP:
curl -X PATCH https://api.example.com/users/42
Sem -X, cURL normalmente envia GET. Com -d, cURL costuma enviar POST.
Headers
-H ou --header adiciona headers:
curl -H "Accept: application/json" -H "X-Request-Id: demo-1" https://api.example.com
Headers são case-insensitive pelas regras HTTP, mas o código da aplicação deve preservar nomes claros para legibilidade.
Corpo
-d, --data, --data-raw e --data-binary anexam conteúdo ao corpo:
curl -H "Content-Type: application/json" -d '{"name":"Ada"}' https://api.example.com/users
O corpo é apenas bytes. O header Content-Type informa ao servidor como interpretar esses bytes.
Formulário e JSON são diferentes
Estes comandos não são equivalentes:
curl -d "name=Ada&role=admin" https://api.example.com/users
curl -H "Content-Type: application/json" -d '{"name":"Ada","role":"admin"}' https://api.example.com/users
O primeiro é dado em estilo formulário. O segundo é JSON. Um conversor pode traduzir ambos, mas sua aplicação ainda precisa que o servidor espere o mesmo content type.