Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.
Curl é uma ferramenta para transferir dados de/para um servidor, usando um dos protocolos suportados. Normalmente, usamos o HTTP, mas as opções são muitas, de FTP e GOPHER a IMAP e LDAP.
O cURL é uma ferramenta de linha de comando que funciona como interface para a biblioteca que faz o serviço pesado, o libcurl.
De forma geral, seu navegador realiza requisições web, recebe respostas, lê/escreve cookies e renderiza sua página. Você pode usar o cURL para fazer tudo isso, exceto a renderização, que cabe ao seu navegador.
Ele oferece uma infinidade de funções úteis como realização de autenticação, interação com API's, preencher formulários HTML, download de arquivos e páginas HTML, etc.
Instalando: como ativar o cURL
No Linux
Para instalar, se você for usuário de GNU/Linux e usar distribuições baseadas em Debian (como o Ubuntu), basta executar:
sudo apt install curl
Para distros baseadas em Arch Linux execute:
sudo pacman -S curl
Para outras distribuições, basta usar o seu gerenciador de pacotes padrão.
No macOS
Há alguns anos o macOS já vem com o curl instalado. Execute curl --version para verificar. Se por algum motivo não estiver presente, é possivel instalar através do Homebrew:
brew install curl
No Windows
As últimas versões do Windows também já estão vindo com o curl por padrão. Mas você pode baixar um instalador gráfico. Após isso, o curl deve estar em seu PATH e pronto para usar pelo CMD ou PowerShell.
Visualizando um HTML
Por exemplo, você pode visualizar o conteúdo HTML da página da Alura executando:
curl www.alura.com/
Nesse caso, não recebemos nenhum retorno, pois quando não incluímos o https:// na url, o site da Alura nos redireciona automaticamente para o endereço que usa HTTPS e o curl, por padrão, não faz redirecionamento. Para alterar esse comportamento e sermos redirecionados, é possível usar a opção -L:
curl -L www.alura.com/
Agora temos um retorno, o conteúdo do site em HTML:
Também é possível obter uma resposta mais verbosa, permitindo visualizar os cabeçalhos da requisição HTTP usando a opção -i. Executando o comando abaixo você poderá vizualizar informações como o Status Code da resposta, a data e hora em que ela foi enviada, o tipo do conteúdo da resposta e várias outras informações que podem variar a depender da implementação do servidor.
# usando a url completa com https
curl -i https://www.alura.com/
Agora o retorno é diferente, primeiro vem as informações de cabeçalho e depois o conteúdo:
Vamos utilizar aqui a mídia de instalação da última versão do Ubuntu como exemplo. Para fazer o download de um arquivo, salvando com o mesmo nome do arquivo definido pelo servidor, basta usar a opção -O.
Por padrão, o curl usa o método HTTP GET para realizar as requisições. Para fazer uma requisição GET, basta executar:
curl https://jsonplaceholder.typicode.com/posts
O retorno será em formato JSON contendo uma lista de posts:
[
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},
{
"userId": 1,
"id": 2,
"title": "qui est esse",
"body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
},
{
"userId": ,
: ,
: ,
:
},
[continua ]
Também é possível especificar qual método usar, passando a opção -X e o método como argumento:
curl -X GET https://jsonplaceholder.typicode.com/posts
Para realizar a criação de um post, você pode executar:
curl -i -X POST https://jsonplaceholder.typicode.com/comments \
-H 'Content-Type: application/json' \
-d $'{"postId": 101,
"name": "Vitor Almeida",
"email": "[email protected]",
"body": "De acordo ao manual do curl ( disponível online [...]"
}'
Resultando em:
HTTP/2201
date: Tue, 05 Jan 202101:17:53 GMT
content-type: application/json; charset=utf-8content-length: 168
set-cookie: __cfduid=d4f15935c351e1b9ece6e8d8cdb1ffa1a1609809470; expires=Thu, 04-Feb-2101:17:50 GMT; path=/; domain=.typicode.com; HttpOnly; SameSite=Lax
x-powered-by: Express
[continua ...]
{
"postId": 101,
"name": "Vitor Almeida",
"email": "[email protected]",
"body": "De acordo ao manual do curl ( disponível online [...]",
"id": 501
}
A opção -H permite adicionar um cabeçalho e a -d permite passar os dados da requisição. Nesse caso, definimos que o conteúdo é no formato JSON e passamos o conteúdo da requisição que será usado para criar uma conta. Podemos ver no resultado que o status foi 201, indicando que um novo recurso foi criado.
Usando o cURL em scripts
É indicado que sua aplicação possua testes automatizados para verificar se seu código está correto e se comportando da forma desejada. De preferência, esses testes devem implementados com bibliotecas nativas da tecnologia em que ela foi implementada, mas também é possível usar o curl em scripts para analisar o comportamento da aplicação.
Abaixo temos um exemplo de script usando o curl para verificar o status de cada requisição feita baseada num arquivo contendo uma lista de URLs para teste.
Dado um arquivo chamado urls.txt contendo uma lista de URLs:
Executando o script no mesmo local onde o arquivo está localizado:
# define o interpretador que será utilizado#!/bin/bash# define qual arquivo será usado para ler a lista de URLs
URL_LIST="urls.txt"# carrega o conteúdo do arquivo num arrayreadarray URLS < ${URL_LIST}# para cada URL, executa o curl, extrai o status da requisição, verifica se foi bem sucedido# e informa o resultadofor URL in${URLS[@]}do
RESPONSE="$(curl -s -I ${URL})"
STATUS=$(echo$RESPONSE | grep "HTTP" | cut -d " " -f 2)
if [[ ${STATUS} -eq "200" ]]
thenecho$URL [SUCESSO]
fidone
Dessa forma não é necessario executar manualmente todos os comandos para realizar o teste basta adicionar os endereços desejados na lista de URLs.
cURL versus Postman
O curl, por ser uma ferramenta de linha de comando, tem uma interface menos amigável, mas permite um fluxo diferente no seu uso, podendo ser usado para automatizar tarefas.
Já o Postman possui uma interface gráfica que é mais amigável e permite criação de sessões e organizar seus testes por projetos e de várias outras formas. Se quiser saber mais sobre o Postman, confira este vídeo tutorial sobre a ferramenta no Alura+:
Como na grande parte das questões relativas à tecnologia, qual das ferramentas usar vai depender do seu contexto e do seu objetivo. Avalie bem suas necessidades, teste as duas aplicações e decida o que for melhor para você.
Usamos muito Postman e cURLna Alura, tanto para testes quanto para automatizações.
<metaproperty="og:description"content="Aprenda Programação, Front-end, Data Science, UX, DevOps, Marketing, Inovação e Gestão na maior plataforma de tecnologia do Brasil">
<metaproperty="og:title"content="Alura | Cursos online de Tecnologia">
"ea molestias quasi exercitationem repellat qui ipsa sit aut"
"body"
"et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"