Httpie: co to je, HTTP klient pro příkazový řádek

Autor: IT Sectr Publikováno: 2026-05-08 Doba čtení: 8 min

Httpie — konzolový HTTP klient s čitelnou syntaxí a barevným výstupem, určený pro testování API z příkazového řádku. Nástroj používá intuitivní syntaxi: http GET https://api.example.com/users bez nutnosti uvádět přepínače pro hlavičky a tělo požadavku. Podle Httpie CLI Documentation (2026) nástroj ve výchozím nastavení podporuje JSON, relace, ověřování a pluginy.

Hlavní body

  • Httpie — moderní náhrada cURL s čitelnou syntaxí, barevným zvýrazněním a vestavěnou JSON serializací.
  • Syntaxe požadavku se staví podle schématu: http [method] URL [header:value] [key=value] bez dalších přepínačů.
  • JSON ve výchozím nastavení — tělo požadavku se interpretuje jako objekt JSON, hlavička Content-Type se přidává automaticky.
  • Relace ukládají cookies a hlavičky mezi požadavky, což je vhodné pro testování ověřených koncových bodů.
  • Pluginy rozšiřují Httpie o podporu dalších formátů, typů ověřování a vlastních transportů.

Co je Httpie a čím se liší od cURL

Httpie (nebo HTTPie) — konzolový nástroj napsaný v Pythonu, který zjednodušuje odesílání HTTP požadavků ve srovnání s cURL. Hlavní rozdíl je syntaxe blízká přirozenému jazyku: argumenty se oddělují mezerami, hlavičky se uvádějí dvojtečkou a data JSON — znaménkem rovnosti, bez nutnosti escapovat uvozovky.

Srovnání cURL a Httpie

Stejný POST požadavek v cURL vyžaduje nejméně tři přepínače (-X, -H, -d) a ruční escapování JSON. Httpie udělá totéž třemi slovy bez přepínačů, automaticky nastaví Content-Type: application/json a obarví výstup. Odpověď se ve výchozím nastavení formátuje s odsazením a zvýrazněním syntaxe.

OperacecURLHttpie
GET požadavekcurl 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
Hlavičkacurl -H "Authorization: Bearer token123" https://api.example.comhttp GET https://api.example.com Authorization:"Bearer token123"

Syntaxe požadavků v Httpie

Httpie používá jednotný formát příkazového řádku bez přepínačů pro základní parametry. Metoda HTTP se uvádí jako první argument (GET, POST, PUT, DELETE, PATCH), URL — jako druhý. Pokud je metoda vynechána, Httpie automaticky zvolí GET (pro požadavky bez těla) nebo POST (s tělem).

Typy argumentů

  • Header:Value — hlavičky požadavku s dvojtečkou, bez mezery za dvojtečkou: Authorization:"Bearer token".
  • key=value — pole objektu JSON v těle požadavku: name=John age=30.
  • key:=value — hodnoty JSON, které nejsou řetězci (čísla, logické hodnoty, pole): active:=true tags:=["dev","test"].
  • key@file — načtení hodnoty ze souboru: avatar@~/photo.jpg.

Httpie automaticky určí typ dat: pokud je předán key=value — tělo se odesílá jako JSON. Pokud je předán surový text přes --raw — jako prostý text. Formát form-data se aktivuje přepínačem -f.

bash
# POST požadavek s daty JSON a hlavičkou
http POST https://api.example.com/users \
    name="John Doe" \
    email="john@example.com" \
    role:="admin" \
    Authorization:"Bearer test123"

# Odpověď se zvýrazněním a Pretty-print
HTTP/1.1 201 Created
Content-Type: application/json
{
    "id": 42,
    "name": "John Doe"
}

Práce s JSON a soubory

JSON serializace v Httpie funguje automaticky: hodnota předaná jako key=value se stane řetězcovým polem JSON. Pro čísla a logické hodnoty se používá key:=value. Vnořené objekty se vytvářejí tečkovou notací: address.city=Moscow.

Nahrávání souborů a binárních dat

Httpie podporuje formát multipart/form-data pro nahrávání souborů a dat pomocí syntaxe key@path. Pokud je třeba odeslat obsah souboru jako surové tělo požadavku, používá se přesměrování vstupu: http POST example.com < file.json. Pro stažení odpovědi do souboru se používá přepínač -d (download).

bash
# Odeslání JSON ze souboru
http POST https://api.example.com/users < user.json

# Nahrání souboru přes multipart
http -f POST https://api.example.com/upload \
    photo@~/photo.jpg \
    description="Profile photo"

Správa relací a cookies

Relace v Httpie ukládají stav mezi požadavky: cookies, hlavičky a parametry ověřování. Relace se vytváří přepínačem --session=name. Data relace se ukládají do souboru JSON ve složce ~/.httpie/sessions/. Relace s příponou :readonly se po požadavku neaktualizuje.

Příklad testování relace

Nejprve se provede POST na /auth/login s přihlašovacími údaji — server vrátí cookie relace. Všechny další požadavky na chráněné koncové body v rámci stejné relace automaticky odesílají uloženou cookie, což simuluje chování prohlížeče při testování API mobilní aplikace.

bash
# Krok 1: ověřování
http --session=app-test POST https://api.example.com/auth/login \
    username="dev" password="secret"

# Krok 2: požadavek s uloženou cookie relace
http --session=app-test GET https://api.example.com/users/me

Ověřování a hlavičky

Httpie podporuje všechny hlavní typy ověřování pomocí přepínačů: -a user:pass pro Basic Auth, --auth-type=digest pro Digest, --auth-type=bearer TOKEN pro Bearer Token. Vlastní hlavičky se přidávají jako HeaderName:value na libovolné místo příkazu.

OAuth 2.0 a Bearer Token

Pro testování API s OAuth 2.0 se token předává přes hlavičku Authorization. Httpie neřídí životní cyklus tokenu na úrovni jádra — to dělá externí skript. Příkaz http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource je ekvivalentem explicitního uvedení hlavičky s tokenem.

Použití Httpie ve skriptech CI/CD

Httpie se díky nulovým závislostem (kromě Pythonu) a čitelnému výstupu skvěle hodí pro pipeline CI/CD. Příkazy se snadno čtou v protokolech bez dalšího parsování. Nástroj se instaluje přes pip a je dostupný ve všech oblíbených Docker obrazech, včetně Alpine, Ubuntu a oficiálních obrazů CI systémů Jenkins a GitLab. Díky tomu je Httpie vhodnou volbou pro automatizované testování REST API a mikroslužeb.

Kontrola health koncového bodu při nasazení

Typický scénář — kontrola stavu API po nasazení aplikace. Httpie odešle požadavek na health koncový bod a skončí s nenulovým kódem, pokud odpověď neodpovídá očekávané. Přepínač --check-status automaticky vrací chybu při stavovém kódu >= 300.

bash
# Health check ve skriptu nasazení
http --check-status GET https://api.staging.example.com/health
    status:="ok" && \
    echo "API je v pořádku" || \
    echo "Kontrola API selhala"

Pokročilé možnosti a pluginy Httpie

Httpie podporuje pluginy přes systém Package Index. Pluginy přidávají nové typy ověřování, formáty serializace a transporty. Instalace probíhá přes pip: pip install httpie-plugin-name. Po instalaci se plugin automaticky aktivuje při příštím spuštění Httpie.

Oblíbené pluginy Httpie

  • httpie-jwt-auth — automatické získávání a obnovování tokenů JWT přes mechanismus refresh token.
  • httpie-oauth — podpora OAuth 2.0 Client Credentials a toku Authorization Code s automatickou výměnou kódu za token.
  • httpie-editor — otevře tělo požadavku v textovém editoru (vim, nano, VS Code) před odesláním.
  • httpie-image — zobrazí obrázky z odpovědi přímo v terminálu (vyžaduje kitty nebo iTerm2).

Skriptování a parsování výstupu

Httpie podporuje filtrování podobné jq přes volbu --pretty=format a výstup kompatibilní s cURL přes --print. Přepínač --quiet vypíná barevný výstup pro lepší čitelnost v protokolech CI. Pro programové zpracování odpovědi použijte přepínač --body, který zobrazuje pouze tělo odpovědi bez hlaviček.

bash
# Extrakce pole z odpovědi JSON pomocí jq
http GET https://api.example.com/users/1 | jq '.name'

# Zobrazení pouze těla odpovědi (bez hlaviček)
http --body GET https://api.example.com/health

# Dávkové odeslání s různými daty ze souboru
while read -r line; do
    http POST https://api.example.com/items $line
done < items.txt

Formáty výstupu a přizpůsobení

Httpie podporuje formáty výstupu přes přepínač --print: H (hlavičky požadavku), B (tělo požadavku), h (hlavičky odpovědi), b (tělo odpovědi). Kombinace --print=hb zobrazí pouze hlavičky a tělo odpovědi. Přepínač --pretty=all zapíná barevné formátování s odsazením.

Vlastní barevná schémata

Httpie podporuje přizpůsobení přes proměnnou HTTPIE_COLORS. Nastavte barvu pro URL, hlavičky, JSON a stavové kódy. K dispozici jsou vestavěná témata: autumn, borland, fruity, monokai, native, tango pro různé terminály.

Výstup ve formátu JSON

Pro programové zpracování použijte --body --pretty=none, které vrací surový JSON. Kompaktní výstup je užitečný pro předání do jq, sed a dalších parserů při automatizaci testování API ve skriptech.

Formáty výstupu a přizpůsobení vzhledu

Httpie podporuje několik formátů výstupu přes přepínač --print: H (hlavičky požadavku), B (tělo požadavku), h (hlavičky odpovědi), b (tělo odpovědi). Kombinace --print=hb zobrazí pouze hlavičky a tělo odpovědi, s vyloučením metainformací o připojení. Přepínač --pretty=all zapíná barevné formátování s odsazením pro čitelnost.

Vlastní barevná schémata

Httpie podporuje přizpůsobení barev přes proměnnou prostředí HTTPIE_COLORS. Můžete nastavit barvu pro URL, hlavičky, klíče JSON a stavové kódy odpovědi. K dispozici jsou vestavěná témata: autumn, borland, fruity, monokai, native a tango pro různé typy terminálů a osobní preference.

Výstup ve formátu JSON bez formátování

Pro programové zpracování výstupu použijte kombinaci přepínačů --body --pretty=none, která vrací surový JSON bez barev a odsazení. Kompaktní výstup je užitečný pro předání do jq, sed a dalších konzolových parserů při automatizaci testování REST API v shell skriptech.

Často kladené dotazy

Čím je Httpie lepší než standardní cURL?

Httpie nabízí čitelnější syntaxi bez přepínačů pro základní operace, automatickou JSON serializaci, barevné zvýraznění odpovědi a vestavěnou podporu relací. cURL zůstává nepostradatelný pro nízkoúrovňové operace: práci s FTP, SMTP a nestandardními protokoly.

Jak odeslat form-data přes Httpie?

Použijte přepínač -f (nebo --form): http -f POST example.com name=John file@~/photo.jpg. Httpie automaticky nastaví Content-Type: multipart/form-data. Bez přepínače -f se data odesílají jako application/json.

Podporuje Httpie HTTPS a certifikáty?

Ano, Httpie podporuje HTTPS. Pro certifikáty podepsané vlastním podpisem použijte přepínač --verify=no. Pro zadání vlastního souboru CA: --verify=/path/to/cert.pem. Ve výchozím nastavení je kontrola certifikátu zapnutá.

Lze Httpie použít pro WebSocket?

Ne, Httpie nepodporuje WebSocket a je určen výhradně pro protokol HTTP/HTTPS. Pro WebSocket použijte websocat nebo wscat. Httpie se zaměřuje na REST, GraphQL a operace se soubory.

Jak uložit odpověď do souboru přes Httpie?

Použijte přepínač -d (download): http -d GET https://example.com/file.zip. Httpie uloží soubor s původním názvem z hlavičky Content-Disposition nebo z URL. Pro vlastní název uveďte -o output.zip.

Shrnutí

  • Httpie — konzolový HTTP klient s intuitivní syntaxí, JSON ve výchozím nastavení a barevným výstupem.
  • Základní syntaxe http [method] URL [key=value] [Header:value] nevyžaduje přepínače pro většinu požadavků.
  • JSON serializace je automatická: key=value se stane polem JSON, key:=value pro čísla a logické hodnoty.
  • Relace ukládají cookies a hlavičky mezi požadavky pro testování ověřených koncových bodů.
  • Ověřování podporuje Basic, Digest, Bearer a vlastní schémata přes přepínač --auth-type.
  • Integrace CI/CD s --check-status a nulovými závislostmi dělá z Httpie vhodný nástroj pro skripty nasazení.
  • Nahrávání souborů přes multipart form-data s přepínačem -f a syntaxí key@file.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také