image

Access unlimited bootcamps and 650+ courses forever

75
%OFF
Guilherme d'Almeida
Guilherme d'Almeida09/12/2025 23:32
Share

Testando APIs com Curl, Jq e Jo no Linux 🐧🚀

    Pessoal, quero compartilhar algo que tem me ajudado a testar minhas APIs de modo mais natural e rápido. Como estudantes e desenvolvedores backend, passamos grande parte do nosso tempo de trabalho testando endpoints. Muitas vezes, recorremos a ferramentas gráficas lentas para tarefas que poderiam ser resolvidas em segundos no terminal. Eu acredito que há uma questão de preferência para cada um. Eu acredito que ganho mais tempo, e ganho também conhecimento sobre o sistema operacional.

    Então, o objetivo deste artigo é mostrar como usar o terminal para testar suas apis de forma mais rápida e "raiz" usando três ferramentas essenciais: curl, jq e jo.

    1. Preparando o Terreno: Variáveis de Ambiente

    Para não ficarmos repetindo a mesma URL o tempo todo, vamos armazenar o endereço base da nossa API em uma variável.

    Para este exemplo, usaremos a API pública JSONPlaceholder.

    export API_URL="https://jsonplaceholder.typicode.com/posts"
    

    Dica: Se você fechar o terminal, essa variável some. Para torná-la permanente, adicione essa linha ao seu .bashrc (se estiver usando o bash como eu).

    2. Introduzindo o cURL

    O cURL (Client URL) é a ferramenta padrão para transferir dados via linha de comando. Ele suporta quase todos os protocolos imagináveis (HTTP, HTTPS, FTP, etc.). É a base de tudo o que faremos aqui.

    3. Buscando Dados (GET) e Visualizando com JQ

    O comando mais básico é o GET. Se rodarmos apenas o curl, receberemos um JSON difícil de ler.

    curl $API_URL
    
    O Poder do JQ 🔍

    Para melhorar a visualização do GET (e de qualquer resposta JSON), usamos o jq. Ele é um processador JSON leve e flexível. Quando passamos o output do curl para ele (|), ele formata (identa) e colore o código.

    curl $API_URL | jq
    

    4. Introduzindo o JO

    Escrever JSON manualmente no terminal é propenso a erros (escapar aspas é um pesadelo: {\"key\": \"value\"}). É aqui que entra o jo.

    O jo cria strings JSON a partir de atribuições simples chave=valor.

    Exemplo simples:

    jo nome="Felipao" cargo="Dev Senior"
    # Saída: {"nome":"Felipao","cargo":"Dev Senior"}
    

    Isso muda o jogo na hora de criar payloads para enviar para a API.

    5. Enviando Dados (POST)

    Vamos criar um novo post na API.

    Passo A: Criar o Payload com JO

    Vamos criar o objeto JSON e guardá-lo numa variável auxiliar. Note como o jo detecta automaticamente que userId=1 é um número, não uma string.

    PAYLOAD=$(jo title="Testando APIs" body="Artigo na DIO" userId=1)
    
    # Verificando como ficou (opcional)
    echo $PAYLOAD | jq
    
    Passo B: Enviar com Curl

    Agora usamos a flag--json,que define adapta o curl para enviar json.

    curl --json "$PAYLOAD" $API_URL
    
    *Obs: O JSONPlaceholder é uma "Fake API". Ela foi feita para simular o comportamento de uma API real sem que você precise configurar um banco de dados. Então ela aceita a requisição POST e PUT, mas sem realizar uma alteração de fato nos dados. Teste isso com uma api própria para ver o funcionamento em toda a sua extensão.

    6. Atualizando Dados (PUT)

    Para atualizar um recurso (PUT), precisamos especificar explicitamente o método com -X e passar o ID na URL.

    Podemos reutilizar nossa variável $PAYLOAD ou criar uma nova antes:

    # Altera apenas o campo 'title' do JSON guardado em PAYLOAD
    PAYLOAD=$(echo $PAYLOAD | jq '.title = "Título Atualizado v2"')
    
    # (Opcional) Veja como ficou
    echo $PAYLOAD | jq
    

    E depois enviar:

    # Atualizando o post de ID 1
    curl -X PUT --json "$PAYLOAD" $API_URL/1
    

    7. Removendo Dados (DELETE)

    Para deletar, mudamos o verbo para DELETE. Aqui, é útil adicionar a flag -v (verbose) para garantir que recebemos o status code correto, já que muitas APIs não retornam corpo no delete.

    curl -vX DELETE $API_URL/1
    

    8. Aliases para Produtividade

    Se você chegou até aqui pensando que seria melhor ter uma ferramenta gráfica para não ficar digitando tanto, calma! Digitar curl --json ou curl -X PUT toda hora realmente pode ficar cansativo, mas é possível criar atalhos (aliases) no nosso arquivo de configuração do shell (.bashrc) para tornar esses comandos mais rápidos e menores.

    Adicione estas linhas ao final do seu arquivo de configuração:

    # Atalhos para API REST
    alias post='curl --json'
    alias put='curl -X PUT --json'
    alias del="curl -vX DELETE"
    

    Esse arquivo fica no seu diretório home. Então para acessá-lo com o vim, por exemplo, você pode simplesmente digitar:

    vim ~/.bashrc
    

    Mas você pode usar qualquer editor. O ponto é fazer com que estes comandos sejam carregados toda vez que o seu terminal for aberto.

    Para que você tenha acesso a esses comandos de imediato, é só carregar o arquivo novamente:

    source ~/.bashrc
    

    E então, é só usar os comandos com as devidas adições ($API_URL e $PAYLOAD) segundo foi ensinado acima.

    Conclusão

    Essa foi uma das descobertas mais úteis que fiz recentemente durante meus estudos no bootcamp. Sair da zona de conforto das interfaces gráficas assusta um pouco no início, mas percebi que dominar o terminal nos dá muito mais agilidade no dia a dia.

    Se você tiver outras dicas ou sugestões para melhorar esse fluxo, deixe nos comentários. Vamos evoluir juntos! 🚀

    Share
    Recommended for you
    GitHub Copilot - Código na Prática
    CI&T - Backend com Java & AWS
    Nexa - Machine Learning e GenAI na Prática
    Comments (0)