O CURL é uma das ferramentas mais versáteis para transferência de arquivos, automação em aplicações, testes e até mesmo análise de conexões.
Listamos abaixo algumas das principais opções do CURL porém muito longe de esgotar a ferramenta.
Dica: Um serviço muito bom para testar requisições é o Beeceptor.
Uma requisição simples a um endereço qualquer. Vai retornar o conteúdo do mesmo, seja um HTML, seja a resposta de uma API.
curl https://url-address
curl https://url-to-download --output [filename]
curl https://url-to-download -o [filename]
Faz o download com o mesmo nome do arquivo original
curl -O https://url-to-download/[filename].[ext]
Redireciona quando retorna 301
curl -L https://url-address
curl -I https://url-address
curl -v https://url-address
curl -i https://url-address
O POST request é o padrão
curl -d "key=value&key2=value2" https://url-address
É possível indicar explicitamente os métodos request: ie (GET, POST, PUT, DELETE ...)
curl -X GET https://url-address
curl -X POST -d "key=value&key2=value2" https://url-address
curl -X PUT -d "key=value&key2=value2" https://url-address
Sobre métodos http veja mais detalhes abaixo.
curl -u login:pass https://url-auth
Neste exemplo podemos ver a utilização do parâmetro -H para envio de um header.
curl -H 'Content-Type:application/json' -d '{"key":"value"}' https://url-post
Usando em certificados auto-assinados ou expirados.
*Usar esta opção pode ser arriscado porque ignora as verificações de segurança.
curl -k https://url-post
Enviar cabeçalhos é útil para testar URLs de destino que aceitam apenas o cabeçalho do host correspondente ou para isolar o IP de um determinado DNS para testes.
curl -k -H 'host: url-de-origem.com' https://[IP]/url-post
O header especifica a URL de origem (o site que faz a solicitação). Neste caso, está definido para example.com.
curl -H 'Origin: https://www.example.com' https://remote-site.com/url-post/
Este recurso é útil para, por exemplo, simultar testes de formulários. No exemplo abaixo simulamos o envio de um form para remote-site.com/url-post/ como se estivéssemos no site example.com/form
curl -H 'Content-Type: application/json' -H 'Origin: https://www.example.com' -d '{"name":"Daniel","mensagem":"Hello, my name is Daniel"}' https://remote-site.com/url-post/
curl https://url-post:1234
Uma maneira prática de enviar requests é através de um arquivo .json com os campos do Body.
curl -s -X POST -H 'Content-Type: application/json' --data-binary @request.json 'https://www.example.com/api/path'
O `@` indica que o arquivo deve ser tratado como um argumento e não como uma string.
A flag `--data-binary` é usada para indicar que os dados dentro do arquivo .json devem ser enviados no request body.
Um exemplo de como poderia ser o arquivo request.json.
{
"name": "Ze",
"idade": 45,
}
Um exemplo de utilização deste método poderia a criação vários arquivos pré-configurados para diferentes tipos de request em um ambiente de desenvolvimento. Outra utilização interessante é quando precisamos enviar uma grande quantidade de dados para uma API como por exemplo uma imagem em codificação Base 64.