Httpie — konsolowy klient HTTP o czytelnej składni i kolorowym wyjściu, przeznaczony do testowania API z poziomu wiersza poleceń. Narzędzie używa intuicyjnej składni: http GET https://api.example.com/users bez konieczności podawania flag dla nagłówków i treści żądania. Według Httpie CLI Documentation (2026), narzędzie domyślnie obsługuje JSON, sesje, uwierzytelnianie i wtyczki.
Najważniejsze
Httpie (lub HTTPie) — konsolowe narzędzie napisane w Pythonie, które upraszcza wysyłanie żądań HTTP w porównaniu z cURL. Główna różnica to składnia zbliżona do języka naturalnego: argumenty oddzielane są spacjami, nagłówki podaje się po dwukropku, a dane JSON — po znaku równości, bez konieczności uciekania znaków cudzysłowu.
To samo żądanie POST w cURL wymaga co najmniej trzech flag (-X, -H, -d) i ręcznego uciekania znaków JSON. Httpie robi to samo trzema słowami bez flag, automatycznie ustawiając Content-Type: application/json i podkolorowując wyjście. Odpowiedź domyślnie formatowana jest z wcięciami i podświetleniem składni.
| Operacja | cURL | Httpie |
|---|---|---|
| Żądanie 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 |
| Nagłówek | curl -H "Authorization: Bearer token123" https://api.example.com | http GET https://api.example.com Authorization:"Bearer token123" |
Httpie używa jednolitego formatu wiersza poleceń bez flag dla podstawowych parametrów. Metoda HTTP podawana jest jako pierwszy argument (GET, POST, PUT, DELETE, PATCH), URL — jako drugi. Jeśli metoda zostanie pominięta, Httpie automatycznie wybiera GET (dla żądań bez treści) lub POST (z treścią).
Authorization:"Bearer token".name=John age=30.active:=true tags:=["dev","test"].avatar@~/photo.jpg.Httpie automatycznie określa typ danych: jeśli przekazano key=value — treść wysyłana jest jako JSON. Jeśli przekazano tekst surowy przez --raw — jako zwykły tekst. Format form-data aktywowany jest flagą -f.
# Żądanie POST z danymi JSON i nagłówkiem
http POST https://api.example.com/users \
name="John Doe" \
email="john@example.com" \
role:="admin" \
Authorization:"Bearer test123"
# Odpowiedź z podświetleniem i Pretty-print
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 42,
"name": "John Doe"
}
Serializacja JSON w Httpie działa automatycznie: wartość przekazana jako key=value staje się polem tekstowym JSON. Dla liczb i wartości logicznych używa się key:=value. Obiekty zagnieżdżone tworzy się przez notację kropkową: address.city=Moscow.
Httpie obsługuje format multipart/form-data do przesyłania plików i danych dzięki składni key@path. Jeśli trzeba wysłać zawartość pliku jako surową treść żądania, używa się przekierowania wejścia: http POST example.com < file.json. Do pobrania odpowiedzi do pliku służy flaga -d (download).
# Wysyłanie JSON z pliku
http POST https://api.example.com/users < user.json
# Pobieranie pliku przez multipart
http -f POST https://api.example.com/upload \
photo@~/photo.jpg \
description="Profile photo"
Sesje w Httpie zapisują stan między żądaniami: cookies, nagłówki i parametry uwierzytelniania. Sesja tworzona jest flagą --session=name. Dane sesji przechowywane są w pliku JSON w folderze ~/.httpie/sessions/. Sesja z sufiksem :readonly nie jest aktualizowana po żądaniu.
Najpierw wykonywany jest POST na /auth/login z danymi uwierzytelniającymi — serwer zwraca cookie sesji. Wszystkie kolejne żądania do chronionych punktów końcowych w ramach tej samej sesji automatycznie wysyłają zapisane cookie, co symuluje zachowanie przeglądarki podczas testowania API aplikacji mobilnej.
# Krok 1: uwierzytelnianie
http --session=app-test POST https://api.example.com/auth/login \
username="dev" password="secret"
# Krok 2: żądanie z zapisanym cookie sesji
http --session=app-test GET https://api.example.com/users/me
Httpie obsługuje wszystkie podstawowe typy uwierzytelniania przez flagi: -a user:pass dla Basic Auth, --auth-type=digest dla Digest, --auth-type=bearer TOKEN dla Bearer Token. Niestandardowe nagłówki dodaje się jako HeaderName:value w dowolnym miejscu polecenia.
Do testowania API z OAuth 2.0 token przekazywany jest przez nagłówek Authorization. Httpie nie zarządza cyklem życia tokena na poziomie jądra — robi to zewnętrzny skrypt. Polecenie http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource jest równoważne jawnemu podaniu nagłówka z tokenem.
Httpie idealnie nadaje się do pipeline'ów CI/CD dzięki zerowym zależnościom (poza Pythonem) i czytelnemu wyjściu. Polecenia łatwo odczytać w logach bez dodatkowego parsowania. Narzędzie instalowane jest przez pip i dostępne we wszystkich popularnych obrazach Docker, w tym Alpine, Ubuntu i oficjalnych obrazach systemów CI Jenkins i GitLab. Dzięki temu Httpie jest wygodnym wyborem do automatycznego testowania REST API i mikrousług.
Typowy scenariusz — sprawdzenie statusu API po wdrożeniu aplikacji. Httpie wysyła żądanie do health-endpointu i kończy działanie z kodem różnym od zera, jeśli odpowiedź nie jest zgodna z oczekiwaną. Flaga --check-status automatycznie zwraca błąd przy kodzie statusu >= 300.
# Health check w skrypcie wdrożeniowym
http --check-status GET https://api.staging.example.com/health
status:="ok" && \
echo "API jest zdrowe" || \
echo "Sprawdzanie API nie powiodło się"
Httpie obsługuje wtyczki przez system Package Index. Wtyczki dodają nowe typy uwierzytelniania, formaty serializacji i transporty. Instalacja odbywa się przez pip: pip install httpie-plugin-name. Po instalacji wtyczka jest automatycznie aktywowana przy następnym uruchomieniu Httpie.
Httpie obsługuje filtrowanie podobne do jq przez opcję --pretty=format oraz wyjście zgodne z cURL przez --print. Flaga --quiet wyłącza kolorowe wyjście dla lepszej czytelności w logach CI. Do programowej obróbki odpowiedzi użyj flagi --body, która wyświetla tylko treść odpowiedzi bez nagłówków.
# Wyodrębnianie pola z odpowiedzi JSON za pomocą jq
http GET https://api.example.com/users/1 | jq '.name'
# Wypisanie tylko treści odpowiedzi (bez nagłówków)
http --body GET https://api.example.com/health
# Masowa wysyłka z różnymi danymi z pliku
while read -r line; do
http POST https://api.example.com/items $line
done < items.txt
Httpie obsługuje formaty wyjścia przez flagę --print: H (nagłówki żądania), B (treść żądania), h (nagłówki odpowiedzi), b (treść odpowiedzi). Kombinacja --print=hb wyświetla tylko nagłówki i treść odpowiedzi. Flaga --pretty=all włącza kolorowe formatowanie z wcięciami.
Httpie obsługuje personalizację przez zmienną HTTPIE_COLORS. Ustaw kolor dla URL, nagłówków, JSON i kodów statusu. Dostępne są wbudowane motywy: autumn, borland, fruity, monokai, native, tango dla różnych terminali.
Do programowej obróbki użyj --body --pretty=none, które zwraca surowy JSON. Kompaktowe wyjście jest przydatne do przekazywania do jq, sed i innych parserów podczas automatyzacji testowania API w skryptach.
Httpie obsługuje kilka formatów wyjścia przez flagę --print: H (nagłówki żądania), B (treść żądania), h (nagłówki odpowiedzi), b (treść odpowiedzi). Kombinacja --print=hb wyświetla tylko nagłówki i treść odpowiedzi, z pominięciem metainformacji o połączeniu. Flaga --pretty=all włącza kolorowe formatowanie z wcięciami dla czytelności.
Httpie obsługuje personalizację kolorów przez zmienną środowiskową HTTPIE_COLORS. Można ustawić kolor dla URL, nagłówków, kluczy JSON i kodów statusu odpowiedzi. Dostępne są wbudowane motywy: autumn, borland, fruity, monokai, native i tango dla różnych typów terminali i osobistych preferencji.
Do programowej obróbki wyjścia użyj kombinacji flag --body --pretty=none, która zwraca surowy JSON bez kolorów i wcięć. Kompaktowe wyjście przydaje się do przekazywania do jq, sed i innych konsolowych parserów podczas automatyzacji testowania REST API w skryptach powłoki.
Często zadawane pytania
Httpie oferuje bardziej czytelną składnię bez flag dla podstawowych operacji, automatyczną serializację JSON, kolorowe podświetlanie odpowiedzi i wbudowaną obsługę sesji. cURL pozostaje niezastąpiony w operacjach niskopoziomowych: pracy z FTP, SMTP i niestandardowymi protokołami.
Użyj flagi -f (lub --form): http -f POST example.com name=John file@~/photo.jpg. Httpie automatycznie ustawi Content-Type: multipart/form-data. Bez flagi -f dane wysyłane są jako application/json.
Tak, Httpie obsługuje HTTPS. Dla certyfikatów samopodpisanych użyj flagi --verify=no. Aby wskazać niestandardowy plik CA: --verify=/path/to/cert.pem. Domyślnie weryfikacja certyfikatu jest włączona.
Nie, Httpie nie obsługuje WebSocket i jest przeznaczony wyłącznie dla protokołu HTTP/HTTPS. Do WebSocket używaj websocat lub wscat. Httpie koncentruje się na REST, GraphQL i operacjach na plikach.
Użyj flagi -d (download): http -d GET https://example.com/file.zip. Httpie zapisze plik z oryginalną nazwą z nagłówka Content-Disposition lub URL. Aby ustawić niestandardową nazwę, podaj -o output.zip.
Podsumowanie
http [method] URL [key=value] [Header:value] nie wymaga flag dla większości żądań.Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również