Comando curl no Linux (baixar arquivos) [Guia Básico]

O comando curl no Linux pode ser utilizado para baixar arquivos, como também conversar com APIs Web diretamente do shell do Linux. É um comando muito versátil para os programadores testarem acesso às API’s de softwares e aplicativos hospedados na web.

A sintaxe básica do curl é:

$ curl URL

Exemplo:

$ curl https://google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

Desta forma, ele envia uma requisição GET para o servidor informado, na página informada. É possível passar parâmetros GET diretamente na URL utilizando os separadores “?” e “&“.

$ curl http://api.servidor.com/myapi/2.5/tempo?id=217

É necessário quando for passar mais de um parâmetro na URL, especialmente utilizando o símbolo “&“, usar a aspas simples na URL:

$ curl 'http://api.servidor.com/myapi/2.5/tempo?id=217&user=uira'

O curl permite informar um timeout em segundos pelo qual ele irá esperar por uma resposta do servidor, com a opção “-m“:

$ curl -m 3  'http://api.servidor.com/myapi/2.5/tempo?id=2172797&user=uira'

É possível fazer uma chamada POST utilizando o curl, com a opção “-X“:

$ curl -X POST  'http://api.servidor.com/myapi/2.5/tempo'

A opção -X permite os métodos GET (padrão), POST e PUT.

Para enviar dados na requisição POST, deve-se usar a opção “-d“. Os dados precisam estar no formato URL encoded.

$ curl -d 'id=217&user=uira' -X POST 'http://api.servidor.com/myapi/2.5/tempo'

Pode-se também separar os dados em múltiplas opções “-d“:

$ curl -d id=217  -d user=uira  -X POST 'http://api.servidor.com/myapi/2.5/tempo'

É possível também especificar um arquivo que contenha os dados para envio via POST, utilizando a opção “-d” com “@“:

$ curl -d @arquivo -X POST 'http://api.servidor.com/myapi/2.5/tempo'

Se o site exigir uma autenticação HTTP simples, a opção “-u” pode enviar um usuário e senha:

$ curl -u [email protected] -d id=217  -d user=uira  -X POST 'http://api.servidor.com/myapi/2.5/tempo'

Para enviar um arquivo JSON, é necessário especificar o cabeçalho HTTP, com a opção “-H“:

$ curl -H "Accept: application/json" -d @arquivojson  -X PUT 'http://api.servidor.com/myapi/2.5/tempo'

A opção “-i” permite ver a resposta HTTP do servidor:

$ curl -i 'https://api.openweathermap.org/data/2.5/weather?q=Belo%20Horizonte,PT&appid=9908ae7bbb3c530f54efdec77ac3ccde' 
HTTP/1.1 200 OK
Server: openresty
Date: Tue, 12 May 2020 22:13:25 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 473
Connection: keep-alive
X-Cache-Key: /data/2.5/weather?q=belo%20horizonte,pt
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST

{"coord":{"lon":-7.42,"lat":39.31},"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}],"base":"stations","main":{"temp":286.83,"feels_like":285.15,"temp_min":286.48,"temp_max":288.15,"pressure":1008,"humidity":87},"visibility":10000,"wind":{"speed":3.1,"deg":220},"clouds":{"all":20},"dt":1589321586,"sys":{"type":1,"id":6402,"country":"PT","sunrise":1589260722,"sunset":1589312008},"timezone":3600,"id":2270968,"name":"Belo Horizonte","cod":200}

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe