Httpie: co to jest, klient HTTP do wiersza poleceń

Autor: IT Sectr Opublikowano: 2026-05-08 Czas czytania: 8 min

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 — nowoczesny zamiennik cURL z czytelną składnią, kolorowym podświetlaniem i wbudowaną serializacją JSON.
  • Składnia żądania budowana jest według schematu: http [method] URL [header:value] [key=value] bez dodatkowych flag.
  • JSON domyślnie — treść żądania jest interpretowana jako obiekt JSON, nagłówek Content-Type ustawiany jest automatycznie.
  • Sesje zapisują cookies i nagłówki między żądaniami, co ułatwia testowanie uwierzytelnionych punktów końcowych.
  • Wtyczki rozszerzają Httpie o obsługę dodatkowych formatów, typów uwierzytelniania i niestandardowych transportów.

Czym jest Httpie i czym różni się od cURL

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.

Porównanie cURL i Httpie

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.

OperacjacURLHttpie
Żądanie 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
Nagłówekcurl -H "Authorization: Bearer token123" https://api.example.comhttp GET https://api.example.com Authorization:"Bearer token123"

Składnia żądań w Httpie

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ą).

Typy argumentów

  • Header:Value — nagłówki żądania z dwukropkiem, bez spacji po dwukropku: Authorization:"Bearer token".
  • key=value — pola obiektu JSON w treści żądania: name=John age=30.
  • key:=value — wartości JSON niebędące ciągami znaków (liczby, wartości logiczne, tablice): active:=true tags:=["dev","test"].
  • key@file — wczytanie wartości z pliku: 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.

bash
# Żą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"
}

Praca z JSON i plikami

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.

Przesyłanie plików i danych binarnych

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).

bash
# 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"

Zarządzanie sesjami i cookies

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.

Przykład testowania sesyjnego

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.

bash
# 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

Uwierzytelnianie i nagłówki

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.

OAuth 2.0 i Bearer Token

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.

Używanie Httpie w skryptach CI/CD

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.

Sprawdzanie health-endpointu we wdrożeniu

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.

bash
# 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ę"

Rozszerzone możliwości i wtyczki Httpie

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.

Popularne wtyczki Httpie

  • httpie-jwt-auth — automatyczne uzyskiwanie i odświeżanie tokenów JWT przez mechanizm refresh token.
  • httpie-oauth — obsługa OAuth 2.0 Client Credentials i flow Authorization Code z automatyczną wymianą kodu na token.
  • httpie-editor — otwiera treść żądania w edytorze tekstu (vim, nano, VS Code) przed wysłaniem.
  • httpie-image — wyświetla obrazy z odpowiedzi bezpośrednio w terminalu (wymagany kitty lub iTerm2).

Skrypty i parsowanie wyjścia

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.

bash
# 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

Formaty wyjścia i personalizacja

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.

Niestandardowe schematy kolorów

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.

Wyjście w formacie JSON

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.

Formaty wyjścia i personalizacja wyglądu

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.

Niestandardowe schematy kolorów

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.

Wyjście w formacie JSON bez formatowania

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

Czym Httpie jest lepszy od standardowego cURL?

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.

Jak wysłać form-data przez Httpie?

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.

Czy Httpie obsługuje HTTPS i certyfikaty?

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.

Czy mogę używać Httpie do WebSocket?

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.

Jak zapisać odpowiedź do pliku przez Httpie?

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

  • Httpie — konsolowy klient HTTP z intuicyjną składnią, JSON domyślnie i kolorowym wyjściem.
  • Podstawowa składnia http [method] URL [key=value] [Header:value] nie wymaga flag dla większości żądań.
  • Serializacja JSON automatyczna: key=value staje się polem JSON, key:=value dla liczb i wartości logicznych.
  • Sesje zapisują cookies i nagłówki między żądaniami do testowania uwierzytelnionych punktów końcowych.
  • Uwierzytelnianie obsługuje Basic, Digest, Bearer i niestandardowe schematy przez flagę --auth-type.
  • Integracja CI/CD z --check-status i zerowymi zależnościami czyni Httpie wygodnym do skryptów wdrożeniowych.
  • Przesyłanie plików przez multipart form-data z flagą -f i składnią key@file.

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.

Omów projekt

Przeczytaj również