Lista de Comandos Curl no Linux

O que é Curl Linux?

O Curl é uma ferramenta de linha de comando utilizada para obter e enviar dados em diversos protocolos.

Seu nome provém de Client URL, que significa, URL do cliente. Ele está disponível, nativamente, na grande maioria dos sistemas operacionais baseados em Unix.

O foco, neste artigo, é demonstrar os comandos mais utilizados para simular um cliente HTTP.

Um navegador faz requisições HTTP. Quando estamos desenvolvendo uma aplicação servidora no estilo REST, por exemplo, não é produtivo ficar criando páginas html para simular um cliente fazendo requisições a este servidor. No lugar disso, uma opção é usar o Curl.

Basicamente, um comando Curl é composto pela palavra curl, seguida de uma url e das opções

Requisição do tipo GET usando Curl

Basta informar o endereço que se deseja acessar.

curl http://dominio.com.br/recurso

Fazer um POST via Curl

Através do parâmetro -X, indicamos o verbo http a ser utilizado. Não fizemos uso dele acima porque, quando não informado, o verbo padrão para requisições http é GET.

curl http://localhost/contatos/contato -X POST

Se desejarmos uma saída mais verbosa, acrescentamos também o parâmetro -v verbose.

curl http://localhost/contatos/contato -X POST -v
POST verboso via curl

Analizando a saída, todas as linhas que iniciam com uma seta para a direita >, indicam logs referentes ao request. Já as que iniciam com a seta para a esquerda, são provenientes da response.

POST via Curl Enviando JSON no Corpo da Requisição

Ao enviar dados via http para o servidor, precisamos dizer, na cabeçalho da requisição, qual tipo de conteúdo está sendo enviado.

Reaproveitando o comando anterior, através do parâmetro -H, indicamos o cabeçalho de uma requisição. Para informar que o conteúdo enviado será no formato JSON, passamos o valor application/json para o Content-type.

curl http://localhost/contatos/contato -X POST -v -H "Content-type: application/json" -d '{
"email": "fulano@gmail.com"
}'

O parâmetro que indica o envio de dados em texto plano no corpo da requisição, é o -d.

Como digitamos um JSON quebrando linhas no terminal, o envolvemos em aspas simples. Do contrário, em cada Enter que déssemos, o terminal tentaría executar nosso comando antes de ele estar completo.

Mas, em vez de escrever o JSON no terminal, temos também a opção de informar o caminho onde o arquivo com ele se encontra. Tudo o que precisamos neste caso é acrescentar um arroba antes do caminho, da seguinte forma:

curl http://localhost/contatos/contato -X POST -v \
-H "Content-type: application/json" -d @files/contato.json

Levando em consideração que já estamos dentro da pasta src, onde se encontra a pasta files, simplesmente acessamos o arquivo JSON dentro dela.

Arquivo JSON.

A contabarra \ foi usada somente para que o terminal do Linux permitisse a quebra de linha.

Busca Reversa no Terminal

Eu gosto do Curl porque posso utilizar a busca reversa no terminal para recuperar comandos anteriormente digitados, através do atalho de teclado Ctrl + r.

Para fazer essa busca, pressiono a combinação de teclas citada acima e começo a digitar o comando que tenho interesse em recuperar. Com isso, alguma opção aparece.

Não se tratando da opção que estou em busca, sigo pressionando Ctrl + r até encontrar o comando desejado dentre as nuâncias apresentadas.

Ao encontrar o exato comando que se deseja executar, basta pressionar Enter.

Se o comando encontrado é o mais próximo do qual você deseja executar, mas ainda precisa de algum ajuste ou incremento, pressione a tecla Esc do teclado para desativar a busca e tornar o comando encontrado disponível para alguma modificação antes de sua execução.

Formatando saída JSON

Quando nosso servidor retorna um JSON, em sistemas Unix, podemos formatá-lo bonitinho com auxílio do programa json_pp. Isso é feito utilizando um pipe |, onde a saída do comando que encontra-se à esquerda do pipe servirá como a entrada para json_pp.

Artigos Relacionados