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 (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.
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.
| Operace | cURL | Httpie |
|---|---|---|
| GET požadavek | 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 |
| Hlavička | curl -H "Authorization: Bearer token123" https://api.example.com | http GET https://api.example.com Authorization:"Bearer token123" |
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).
Authorization:"Bearer token".name=John age=30.active:=true tags:=["dev","test"].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.
# 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"
}
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.
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).
# 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"
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.
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.
# 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
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.
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.
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.
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.
# 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"
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.
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.
# 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
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.
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.
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.
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.
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.
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
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.
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.
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á.
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.
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í
http [method] URL [key=value] [Header:value] nevyžaduje přepínače pro většinu požadavků.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í.
Přečtěte si také