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 (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.
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ção | cURL | Httpie |
|---|---|---|
| Solicitação GET | curl https://api.example.com | http GET https://api.example.com |
| POST JSON | curl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' https://api.example.com | http POST https://api.example.com name=test |
| Cabeçalho | curl -H "Authorization: Bearer token123" https://api.example.com | http GET https://api.example.com Authorization:"Bearer token123" |
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).
Authorization:"Bearer token".name=John age=30.active:=true tags:=["dev","test"].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.
# 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"
}
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.
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).
# 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"
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.
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.
# 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
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.
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.
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.
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.
# 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"
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.
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.
# 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
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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
http [method] URL [key=value] [Header:value] não requer flags para a maioria das solicitações.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.
Leia também