Httpie: o que é, um cliente HTTP para linha de comando

Autor: IT Sectr Publicado: 2026-05-08 Tempo de leitura: 8 min

Httpie é um cliente HTTP de console com sintaxe legível por humanos e saída colorida, projetado para testar APIs a partir da linha de comando. A ferramenta usa uma sintaxe intuitiva: http GET https://api.example.com/users sem a necessidade de especificar flags para cabeçalhos e corpo da solicitação. De acordo com a Httpie CLI Documentation (2026), o utilitário suporta JSON por padrão, sessões, autenticação e plugins.

Principais pontos

  • Httpie é um substituto moderno do cURL com sintaxe legível, destaque colorido e serialização JSON integrada.
  • A sintaxe da solicitação segue o esquema: http [method] URL [header:value] [key=value] sem flags adicionais.
  • JSON por padrão — o corpo da solicitação é tratado como um objeto JSON e o cabeçalho Content-Type é definido automaticamente.
  • As sessões preservam cookies e cabeçalhos entre solicitações, o que é conveniente para testar endpoints autenticados.
  • Os plugins ampliam o Httpie com suporte a formatos adicionais, tipos de autenticação e transportes personalizados.

O que é Httpie e como ele difere do cURL

Httpie (ou HTTPie) é um utilitário de linha de comando escrito em Python que simplifica o envio de solicitações HTTP em comparação com o cURL. A principal diferença é uma sintaxe próxima da linguagem natural: os argumentos são separados por espaços, os cabeçalhos são indicados por dois-pontos e os dados JSON são indicados por sinal de igual sem escapar aspas.

Comparação entre cURL e Httpie

A mesma solicitação POST no cURL exige pelo menos três flags (-X, -H, -d) e escape manual do JSON. O Httpie faz o mesmo com três palavras e sem flags, definindo automaticamente Content-Type: application/json e destacando a saída. A resposta é formatada com recuo e realce de sintaxe por padrão.

OperaçãocURLHttpie
Solicitação GETcurl https://api.example.comhttp GET https://api.example.com
POST JSONcurl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.comhttp POST https://api.example.com name=test
Cabeçalhocurl -H "Authorization: Bearer token123" https://api.example.comhttp GET https://api.example.com Authorization:"Bearer token123"

Sintaxe de solicitações no Httpie

Httpie usa um formato único de linha de comando sem flags para os principais parâmetros. O método HTTP é especificado como primeiro argumento (GET, POST, PUT, DELETE, PATCH) e a URL como segundo. Se o método for omitido, o Httpie escolhe automaticamente GET (para solicitações sem corpo) ou POST (com corpo).

Tipos de argumentos

  • Header:Value — cabeçalhos da solicitação com dois-pontos, sem espaço após os dois-pontos: Authorization:"Bearer token".
  • key=value — campos do objeto JSON no corpo da solicitação: name=John age=30.
  • key:=value — valores JSON não-string (números, booleanos, matrizes): active:=true tags:=["dev","test"].
  • key@file — carregamento de um valor a partir de um arquivo: avatar@~/photo.jpg.

O Httpie determina automaticamente o tipo de dado: se key=value for passado, o corpo é enviado como JSON. Se texto bruto for passado via --raw, ele é enviado como texto simples. O formato form-data é ativado com a flag -f.

bash
# Solicitação POST com dados JSON e um cabeçalho
http POST https://api.example.com/users \
    name="John Doe" \
    email="john@example.com" \
    role:="admin" \
    Authorization:"Bearer test123"

# Resposta com destaque e Pretty-print
HTTP/1.1 201 Created
Content-Type: application/json
{
    "id": 42,
    "name": "John Doe"
}

Trabalhar com JSON e arquivos

A serialização JSON no Httpie funciona automaticamente: um valor passado como key=value se torna um campo de string do JSON. Para números e valores booleanos, usa-se key:=value. Objetos aninhados são criados com notação de ponto: address.city=Moscow.

Upload de arquivos e dados binários

O Httpie suporta o formato multipart/form-data para enviar arquivos e dados via sintaxe key@path. Se precisar enviar o conteúdo de um arquivo como corpo bruto da solicitação, usa-se redirecionamento de entrada: http POST example.com < file.json. Para baixar a resposta para um arquivo, usa-se a flag -d (download).

bash
# Envio de JSON a partir de um arquivo
http POST https://api.example.com/users < user.json

# Upload de um arquivo via multipart
http -f POST https://api.example.com/upload \
    photo@~/photo.jpg \
    description="Profile photo"

Gerenciamento de sessões e cookies

As sessões no Httpie preservam o estado entre solicitações: cookies, cabeçalhos e parâmetros de autenticação. Uma sessão é criada com a flag --session=name. Os dados da sessão são armazenados em um arquivo JSON na pasta ~/.httpie/sessions/. Uma sessão com o sufixo :readonly não é atualizada após uma solicitação.

Exemplo de teste com sessão

Primeiro, é feita uma solicitação POST para /auth/login com as credenciais — o servidor retorna um cookie de sessão. Todas as solicitações posteriores a endpoints protegidos dentro da mesma sessão enviam automaticamente o cookie salvo, o que simula o comportamento do navegador ao testar a API de um aplicativo móvel.

bash
# Passo 1: autenticação
http --session=app-test POST https://api.example.com/auth/login \
    username="dev" password="secret"

# Passo 2: solicitação com o cookie de sessão salvo
http --session=app-test GET https://api.example.com/users/me

Autenticação e cabeçalhos

Httpie suporta todos os principais tipos de autenticação via flags: -a user:pass para Basic Auth, --auth-type=digest para Digest, --auth-type=bearer TOKEN para Bearer Token. Cabeçalhos personalizados são adicionados como HeaderName:value em qualquer lugar do comando.

OAuth 2.0 e Bearer Token

Para testar uma API com OAuth 2.0, o token é passado pelo cabeçalho Authorization. O Httpie não gerencia o ciclo de vida do token no nível do núcleo — isso é feito por um script externo. O comando http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource equivale a especificar explicitamente o cabeçalho com o token.

Uso do Httpie em scripts de CI/CD

Httpie é ideal para pipelines de CI/CD graças a zero dependências (exceto Python) e saída legível. Os comandos são fáceis de ler nos logs sem parsing adicional. A ferramenta é instalada via pip e está disponível em todas as imagens Docker populares, incluindo Alpine, Ubuntu e as imagens oficiais de CI do Jenkins e GitLab. Isso torna o Httpie uma escolha conveniente para testes automatizados de APIs REST e microsserviços.

Verificação do endpoint de saúde no deploy

Um cenário típico é verificar o status da API após implantar um aplicativo. O Httpie envia uma solicitação ao endpoint de saúde e termina com código diferente de zero se a resposta não corresponder ao esperado. A flag --check-status retorna automaticamente um erro para códigos de status >= 300.

bash
# Verificação de saúde no script de deploy
http --check-status GET https://api.staging.example.com/health
    status:="ok" && \
    echo "API está saudável" || \
    echo "Falha na verificação da API"

Recursos avançados e plugins do Httpie

Httpie suporta plugins por meio do sistema Package Index. Os plugins adicionam novos tipos de autenticação, formatos de serialização e transportes. A instalação é feita via pip: pip install httpie-plugin-name. Após a instalação, o plugin é ativado automaticamente no próximo lançamento do Httpie.

Plugins populares do Httpie

  • httpie-jwt-auth — obtenção e renovação automáticas de tokens JWT por meio do mecanismo de refresh token.
  • httpie-oauth — suporte a OAuth 2.0 Client Credentials e fluxo Authorization Code com troca automática de código por token.
  • httpie-editor — abre o corpo da solicitação em um editor de texto (vim, nano, VS Code) antes de enviar.
  • httpie-image — exibe imagens da resposta diretamente no terminal (requer kitty ou iTerm2).

Scripting e parsing de saída

O Httpie suporta filtragem semelhante a jq via opção --pretty=format e saída compatível com cURL via --print. A flag --quiet desativa a saída colorida para melhor legibilidade nos logs de CI. Para processamento programático da resposta, use a flag --body, que produz apenas o corpo da resposta sem cabeçalhos.

bash
# Extração de um campo de uma resposta JSON com jq
http GET https://api.example.com/users/1 | jq '.name'

# Saída apenas do corpo da resposta (sem cabeçalhos)
http --body GET https://api.example.com/health

# Envio em lote com dados diferentes de um arquivo
while read -r line; do
    http POST https://api.example.com/items $line
done < items.txt

Formatos de saída e personalização

Httpie suporta formatos de saída via flag --print: H (cabeçalhos da solicitação), B (corpo da solicitação), h (cabeçalhos da resposta), b (corpo da resposta). A combinação --print=hb gera apenas os cabeçalhos e o corpo da resposta. A flag --pretty=all ativa formatação colorida com recuo.

Esquemas de cores personalizados

O Httpie suporta personalização por meio da variável HTTPIE_COLORS. Configure cores para URL, cabeçalhos, JSON e códigos de status. Temas integrados estão disponíveis: autumn, borland, fruity, monokai, native, tango para diferentes terminais.

Saída em formato JSON

Para processamento programático, use --body --pretty=none, que retorna JSON bruto. A saída compacta é útil para passar para jq, sed e outros parsers ao automatizar testes de API em scripts.

Formatos de saída e personalização de aparência

Httpie suporta vários formatos de saída via flag --print: H (cabeçalhos da solicitação), B (corpo da solicitação), h (cabeçalhos da resposta), b (corpo da resposta). A combinação --print=hb gera apenas os cabeçalhos e o corpo da resposta, excluindo metainformações da conexão. A flag --pretty=all ativa formatação colorida com recuo para legibilidade.

Esquemas de cores personalizados

O Httpie suporta personalização de cores por meio da variável de ambiente HTTPIE_COLORS. Você pode configurar cores para URL, cabeçalhos, chaves JSON e códigos de status da resposta. Temas integrados estão disponíveis: autumn, borland, fruity, monokai, native e tango para diferentes tipos de terminais e preferências pessoais.

Saída em formato JSON sem formatação

Para processamento programático da saída, use a combinação de flags --body --pretty=none, que retorna JSON bruto sem cores e recuos. A saída compacta é útil para passar para jq, sed e outros parsers de console ao automatizar testes de API REST em scripts de shell.

Perguntas frequentes

Por que o Httpie é melhor que o cURL padrão?

Httpie oferece sintaxe mais legível sem flags para operações básicas, serialização JSON automática, destaque colorido da resposta e suporte integrado a sessões. O cURL continua indispensável para operações de baixo nível: trabalhar com FTP, SMTP e protocolos não padrão.

Como enviar form-data via Httpie?

Use a flag -f (ou --form): http -f POST example.com name=John file@~/photo.jpg. O Httpie definirá automaticamente Content-Type: multipart/form-data. Sem a flag -f, os dados são enviados como application/json.

O Httpie suporta HTTPS e certificados?

Sim, o Httpie suporta HTTPS. Para certificados autoassinados, use a flag --verify=no. Para especificar um arquivo CA personalizado: --verify=/path/to/cert.pem. A verificação de certificados está ativada por padrão.

O Httpie pode ser usado para WebSocket?

Não, o Httpie não suporta WebSocket e é destinado exclusivamente ao protocolo HTTP/HTTPS. Para WebSocket, use websocat ou wscat. O Httpie foca em REST, GraphQL e operações com arquivos.

Como salvar uma resposta em um arquivo via Httpie?

Use a flag -d (download): http -d GET https://example.com/file.zip. O Httpie salvará o arquivo com o nome original do cabeçalho Content-Disposition ou da URL. Para um nome personalizado, especifique -o output.zip.

Resumo

  • Httpie — um cliente HTTP de console com sintaxe intuitiva, JSON por padrão e saída colorida.
  • Sintaxe básica http [method] URL [key=value] [Header:value] não requer flags para a maioria das solicitações.
  • Serialização JSON automática: key=value se torna um campo JSON, key:=value para números e valores booleanos.
  • Sessões preservam cookies e cabeçalhos entre solicitações para testar endpoints autenticados.
  • Autenticação suporta esquemas Basic, Digest, Bearer e personalizados via flag --auth-type.
  • Integração CI/CD com --check-status e zero dependências torna o Httpie conveniente para scripts de deploy.
  • Upload de arquivos via multipart form-data com a flag -f e a sintaxe key@file.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também