No desenvolvimento e na integração de sistemas, as APIs1 desempenham um papel crucial. Para testar, homologar e utilizar essas APIs de maneira eficiente, o cURL se destaca como uma das ferramentas mais poderosas e flexíveis. Neste artigo, vamos explorar as vantagens do cURL e como ele pode ser utilizado para facilitar a interação com APIs.
O cURL (Client URL) é uma ferramenta de linha de comando que permite transferir dados para ou de um servidor, utilizando uma variedade de protocolos, incluindo HTTP,2 HTTPS3, FTP4, e muitos outros. Ele é amplamente utilizado para realizar chamadas a APIs RESTful5, possibilitando a simulação de requisições GET6, POST7, PUT8, DELETE9, entre outras.
■ Versatilidade e Suporte a Múltiplos Protocolos: Suporta uma vasta gama de protocolos, o que permite testar e homologar APIs em diferentes ambientes e configurações de rede.
■ Simulação de Requisições Complexas: É possível construir requisições complexas, incluindo headers10 customizados, autenticação, envio de dados em formatos JSON11 ou XML12, e muito mais.
■ Automatização de Testes: Pode ser integrado em scripts de automação, permitindo a execução de testes repetidos de forma eficiente, ideal para pipelines13 de CI/CD14.
■ Interoperabilidade com Ferramentas de Desenvolvimento: Sendo uma ferramenta de linha de comando, cURL pode ser utilizado em qualquer sistema operacional e integrado facilmente com outras ferramentas de desenvolvimento.
■ Depuração e Análise de Respostas: Facilita a análise das respostas das APIs, permitindo a depuração de erros e a validação de resultados em tempo real.
■ Simplicidade: A instalação e uso do cURL são extremamente simples, o que o torna acessível para qualquer desenvolvedor.
■ Eficiência: A velocidade com que o cURL executa requisições é ideal para a rápida homologação de funcionalidades em APIs.
■ Controle Total: Com cURL, você tem controle total sobre cada detalhe da requisição, desde os headers até o corpo da mensagem.
Guia de Uso
Ao usar o cURL para interagir com APIs, você pode personalizar os comandos conforme suas necessidades. Nos exemplos abaixo, os termos SERVER, TOKEN, e DATA são variáveis que você deverá substituir de acordo com a API que deseja acessar, o recurso que deseja manipular, e as credenciais de autenticação.
- SERVER: Representa a URL base do servidor onde a API está hospedada. Substitua SERVER pelo endereço do servidor, como https://api.techflowinfo.com.br, adaptando o comando ao seu caso de uso.
- TOKEN: Representa o token de autenticação que é necessário para acessar recursos protegidos. Substitua TOKEN pelo JWT15 obtido após o login, como
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
…. Este token é utilizado nos headers das requisições para autenticar suas operações.- DATA: Representa os dados que você deseja enviar na requisição, especialmente em métodos POST, PUT ou PATCH. Substitua DATA pelo corpo da requisição em formato JSON, como
{"nome": "novo_recurso", "descricao": "Descrição do recurso"}
. O valor de DATA varia conforme o que a API espera receber.
Antes de interagir com uma API protegida, geralmente é necessário autenticar-se e obter um token JWT (JSON Web Token). Esse token é então usado nas requisições subsequentes para autorizar o acesso.
curl -X POST <SERVER>/login
-H "Content-Type: application/json"
-d '{
"username": "yoda",
"password": "eFEQiYUOYdYT"
}'
Resposta Comum:
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"tokenType": "Bearer",
"expiresIn": 3600,
"refreshToken": "d1f344df-e05d-48b5-b1ea-c89e15c91b9b",
"user": {
"id": 1,
"username": "yoda",
"email": "yoda@techflowinfo.com.br",
"roles": ["USER"]
}
}
GET
Após obter o token JWT, você pode realizar uma requisição GET para acessar recursos protegidos.
curl -X GET <SERVER>/produtos -H "Authorization: Bearer <TOKEN>"
Demonstração de Resposta:
[
{
"id": 101,
"nome": "Cadeira Ergonômica",
...
},
{
"id": 92,
"nome": "Mesa de Escritório",
...
},
{
"id": 219,
"nome": "Monitor 4k 27'",
...
},
{
"id": 158,
"nome": "Teclado Mecânico",
...
}
]
POST
Para criar um novo recurso na API, utilizamos uma requisição POST. Aqui, passamos os dados no corpo da requisição em formato JSON.
curl -X POST <SERVER>/produtos -H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"nome": "Ventilador de Torre",
...
}'
Demonstração de Resposta:
{
"id": 250,
"nome": "Ventilador de Torre",
...
}
PUT
Para atualizar um recurso existente, utilizamos uma requisição PUT, onde fornecemos o ID do recurso a ser atualizado e os novos dados.
curl -X PUT <SERVER>/produtos/219 \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"nome": "Monitor 4k 29'"
}'
Demonstração de Resposta:
{
"id": 219,
"nome": "Monitor 4k 29'",
...
}
DELETE
Para remover um recurso da API, utilizamos uma requisição DELETE, passando o ID do recurso.
curl -X DELETE <SERVER>/produtos/219 \
-H "Authorization: Bearer <TOKEN>" \
Demonstração de Resposta:
{
"mensagem": "Recurso removido com sucesso"
}
O cURL é uma ferramenta indispensável para qualquer desenvolvedor que trabalha com APIs. Sua flexibilidade, poder e facilidade de uso o tornam a escolha ideal para homologação e testes de APIs em ambientes de desenvolvimento. Se ainda não incorporou o cURL em sua caixa de ferramentas, este é o momento perfeito para começar.
- API ⇨ Interface de Programação de Aplicações é como uma ponte que permite que diferentes programas ou aplicativos conversem entre si e troquem informações, mesmo que tenham sido criados de maneiras diferentes. No caso de uma API REST, essa comunicação acontece usando a internet, através de requisições simples que pedem ou enviam dados, como buscar informações em um site. ↩︎
- HTTP ⇨ Protocolo de Transferência de Hipertexto. É como um conjunto de regras que navegadores de internet e servidores usam para comunicar entre si. Quando você acessa um site, está usando o HTTP para enviar e receber informações da internet, como quando você pede uma página e o servidor responde enviando-a para o seu navegador. ↩︎
- HTTPS ⇨ É uma versão segura do HTTP. Ele protege a comunicação entre seu navegador e o site que você está acessando, garantindo que os dados trocados sejam criptografados e não possam ser interceptados ou alterados por terceiros. É como enviar informações em um envelope fechado, em vez de em um cartão-postal aberto. ↩︎
- FTP ⇨ Protocolo de Transferência de Arquivos. Ele é usado para enviar e receber arquivos entre o seu computador e um servidor na internet. Imagine que é como uma ponte que você usa para copiar documentos de uma pasta em um computador para outra pasta em um servidor, ou vice-versa. ↩︎
- Restfull ⇨ É um estilo de construção de APIs na web que facilita a troca de informações entre sistemas. Ele usa regras simples para que os aplicativos possam acessar dados e recursos pela internet, de forma organizada e fácil de entender, como seguir instruções para pegar ou enviar algo. ↩︎
- GET ⇨ Método usado na internet para pedir dados de um servidor. É como quando você clica em um link ou digita um endereço web no navegador; você está usando o método GET para pedir ao servidor que mostre a página ou as informações que você quer ver. É basicamente uma forma de dizer “me mostre isso”. ↩︎
- POST ⇨ Método usado na internet para enviar dados para um servidor. É como preencher um formulário online e clicar em “enviar”. Quando você faz isso, o método POST está sendo usado para mandar essas informações ao servidor, que vai processá-las e dar uma resposta, como confirmar que seus dados foram recebidos. ↩︎
- PUT ⇨ Método usado na internet para atualizar ou substituir informações em um servidor. Imagine que você tem um arquivo em uma pasta online e quer substituir esse arquivo por uma versão nova. O método PUT permite que você envie essa nova versão, substituindo a antiga. É como atualizar um documento com as correções mais recentes. ↩︎
- DELETE ⇨ Método usado na internet para remover dados de um servidor. É como quando você apaga um arquivo ou exclui uma mensagem; o método DELETE envia uma instrução ao servidor para que ele apague permanentemente as informações especificadas. ↩︎
- Headers ⇨ Cabeçalhos/etiquetas que acompanham as mensagens trocadas entre seu navegador e um servidor na internet. Eles contêm informações adicionais, como o tipo de conteúdo, detalhes sobre a segurança, ou dados sobre quem está enviando a mensagem. Essas etiquetas ajudam o servidor e o navegador a entender como tratar a mensagem corretamente. ↩︎
- JSON ⇨ Formato simples para organizar e trocar dados na internet. Ele se parece com um texto estruturado em pares de chave e valor, como uma lista de coisas com seus detalhes. Por exemplo, um nome e um número de telefone. JSON é fácil de ler tanto para pessoas quanto para computadores, e é muito usado para enviar e receber informações entre sistemas diferentes. ↩︎
- XML ⇨ Formato para organizar e armazenar dados em um arquivo de texto. Ele usa tags (como etiquetas) para definir diferentes partes da informação, parecido com a estrutura de um documento HTML. XML é usado para trocar dados entre sistemas, e é útil porque é legível tanto para humanos quanto para computadores, embora seja um pouco mais detalhado e complexo que JSON. ↩︎
- Pipeline ⇨ É uma sequência de etapas que processam dados de maneira ordenada, como uma linha de montagem. Cada etapa pega a saída da anterior, faz algum trabalho nela, e passa para a próxima. É usado em várias áreas da tecnologia para automatizar e simplificar tarefas complexas, garantindo que os dados sejam processados de forma eficiente e consistente. ↩︎
- CI/CD ⇨ Prática de automação no desenvolvimento de software. CI (Integração Contínua) significa que as mudanças no código são testadas e integradas regularmente, garantindo que tudo funcione bem junto. CD (Entrega Contínua ou Implantação Contínua) leva essas mudanças para um ambiente de produção de forma automática, permitindo que novas versões de um software sejam lançadas rapidamente e com menos erros. É como uma fábrica que monta, testa e entrega produtos de forma contínua e automatizada. ↩︎
- JWT ⇨ É uma forma compacta de trocar informações entre duas partes de forma segura. Pode-se pensar nele como um pequeno pacote de dados que pode ser enviado de forma segura porque possui um mecanismo de proteção que impede que outras pessoas o modifiquem sem permissão. É frequentemente usado na internet para verificar se uma pessoa é realmente quem diz ser, ajudando a proteger o acesso a websites e serviços online. ↩︎