Dicas de utilização do curl

Versatilidade e rapidez em requisições

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.

Tópicos abordados

Envia um GET

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
            
        

Download de arquivos

            
    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]
            
        

Auto redirect

Redireciona quando retorna 301

            
    curl -L https://url-address
            
        

Retorna Header

            
    curl -I https://url-address
            
        

Retorna detalhes da conexão

            
    curl -v https://url-address
            
        

Retorna o conteúdo mais o header

            
    curl -i https://url-address
            
        

Envia um POST

O POST request é o padrão

            
    curl -d "key=value&key2=value2" https://url-address
            
        

Requests explícitos

É 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.

Efetua login

            
    curl -u login:pass https://url-auth
            
        

Envia POST no formato Json

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
            
        

Envia requisição ignorando certificado SSL

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
            
        

Enviando Host Header

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
            
        

Enviando Origin Header

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/
            
        

Requisição com número de porta

            
    curl https://url-post:1234
            
        

Enviando um request body por meio de um arquivo

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.

Explicando resumidamente os principais métodos HTTP

GET
Usado para buscar informações de um servidor. Retorna dados de um recurso especificado na URL. Não modifica o estado do servidor.
POST
Utilizado para enviar dados ao servidor. Pode ter efeitos no estado do servidor, como criar registros.
PUT
Usado para atualizar um recurso. Substitui o recurso na URL fornecida.
DELETE
Solicita a remoção de um recurso.