Httpie: ce este, client HTTP pentru linia de comandă

Autor: IT Sectr Publicat: 2026-05-08 Timp de citire: 8 min

Httpie — un client HTTP de consolă cu sintaxă lizibilă pentru oameni și ieșire colorată, destinat testării API-urilor din linia de comandă. Instrumentul folosește o sintaxă intuitivă: http GET https://api.example.com/users fără a fi nevoie să specifici flaguri pentru antete și corpul cererii. Potrivit Httpie CLI Documentation (2026), utilitarul acceptă implicit JSON, sesiuni, autentificare și pluginuri.

Puncte cheie

  • Httpie — un înlocuitor modern pentru cURL, cu sintaxă lizibilă, evidențiere colorată și serializare JSON integrată.
  • Sintaxa cererii este construită după schema: http [method] URL [header:value] [key=value] fără flaguri suplimentare.
  • JSON implicit — corpul cererii este interpretat ca obiect JSON, antetul Content-Type este adăugat automat.
  • Sesiunile salvează cookie-urile și anteturile între cereri, ceea ce este util pentru testarea endpoint-urilor autentificate.
  • Pluginurile extind Httpie cu suport pentru formate suplimentare, tipuri de autentificare și transporturi personalizate.

Ce este Httpie și cu ce diferă de cURL

Httpie (sau HTTPie) — un utilitar de consolă scris în Python, care simplifică trimiterea cererilor HTTP comparativ cu cURL. Principala diferență este sintaxa apropiată de limbajul natural: argumentele sunt separate prin spații, anteturile se specifică cu două puncte, iar datele JSON — cu semnul egal, fără a scăpa de ghilimele.

Comparația între cURL și Httpie

Aceeași cerere POST în cURL necesită minimum trei flaguri (-X, -H, -d) și escaparea manuală a JSON-ului. Httpie face același lucru cu trei cuvinte, fără flaguri, setând automat Content-Type: application/json și colorând ieșirea. Răspunsul este formatat implicit cu indentare și evidențiere de sintaxă.

OperațiunecURLHttpie
Cerere 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
Antetcurl -H "Authorization: Bearer token123" https://api.example.comhttp GET https://api.example.com Authorization:"Bearer token123"

Sintaxa cererilor în Httpie

Httpie folosește un format unitar de linie de comandă, fără flaguri pentru parametrii de bază. Metoda HTTP este specificată ca prim argument (GET, POST, PUT, DELETE, PATCH), iar URL-ul — ca al doilea. Dacă metoda este omisă, Httpie alege automat GET (pentru cereri fără corp) sau POST (cu corp).

Tipuri de argumente

  • Header:Value — anteturile cererii cu două puncte, fără spațiu după două puncte: Authorization:"Bearer token".
  • key=value — câmpurile obiectului JSON din corpul cererii: name=John age=30.
  • key:=value — valori JSON non-string (numere, valori booleene, array-uri): active:=true tags:=["dev","test"].
  • key@file — încărcarea valorii dintr-un fișier: avatar@~/photo.jpg.

Httpie determină automat tipul de date: dacă este transmis key=value — corpul este trimis ca JSON. Dacă este transmis text brut prin --raw — ca text simplu. Formatul form-data este activat cu flagul -f.

bash
# Cerere POST cu date JSON și antet
http POST https://api.example.com/users \
    name="John Doe" \
    email="john@example.com" \
    role:="admin" \
    Authorization:"Bearer test123"

# Răspuns cu evidențiere și Pretty-print
HTTP/1.1 201 Created
Content-Type: application/json
{
    "id": 42,
    "name": "John Doe"
}

Lucrul cu JSON și fișiere

Serializarea JSON în Httpie funcționează automat: valoarea transmisă ca key=value devine un câmp string JSON. Pentru numere și valori booleene se folosește key:=value. Obiectele imbricate se creează prin notația cu punct: address.city=Moscow.

Încărcarea fișierelor și a datelor binare

Httpie acceptă formatul multipart/form-data pentru încărcarea fișierelor și datelor prin sintaxa key@path. Dacă trebuie trimis conținutul unui fișier ca corp brut al cererii, se folosește redirecționarea intrării: http POST example.com < file.json. Pentru descărcarea răspunsului într-un fișier se folosește flagul -d (download).

bash
# Trimiterea JSON din fișier
http POST https://api.example.com/users < user.json

# Încărcarea fișierului prin multipart
http -f POST https://api.example.com/upload \
    photo@~/photo.jpg \
    description="Profile photo"

Gestionarea sesiunilor și cookie-urilor

Sesiunile din Httpie salvează starea între cereri: cookie-uri, antete și parametri de autentificare. Sesiunea se creează cu flagul --session=name. Datele sesiunii sunt stocate într-un fișier JSON în folderul ~/.httpie/sessions/. Sesiunea cu sufixul :readonly nu este actualizată după cerere.

Exemplu de testare a sesiunii

Întâi se execută un POST către /auth/login cu datele de autentificare — serverul returnează cookie-ul sesiunii. Toate cererile ulterioare către endpoint-urile protejate din aceeași sesiune trimit automat cookie-ul salvat, simulând comportamentul browserului la testarea API-ului unei aplicații mobile.

bash
# Pasul 1: autentificare
http --session=app-test POST https://api.example.com/auth/login \
    username="dev" password="secret"

# Pasul 2: cerere cu cookie-ul de sesiune salvat
http --session=app-test GET https://api.example.com/users/me

Autentificare și antete

Httpie acceptă toate tipurile principale de autentificare prin flaguri: -a user:pass pentru Basic Auth, --auth-type=digest pentru Digest, --auth-type=bearer TOKEN pentru Bearer Token. Anteturile personalizate se adaugă ca HeaderName:value în orice loc din comandă.

OAuth 2.0 și Bearer Token

Pentru testarea API-urilor cu OAuth 2.0, tokenul este transmis prin antetul Authorization. Httpie nu gestionează ciclul de viață al tokenului la nivel de nucleu — acest lucru este făcut de un script extern. Comanda http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource este echivalentă cu specificarea explicită a antetului cu token.

Utilizarea Httpie în scripturile CI/CD

Httpie este ideal pentru pipeline-urile CI/CD datorită dependențelor zero (cu excepția Python) și ieșirii lizibile. Comenzile se citesc ușor din loguri, fără parsare suplimentară. Instrumentul se instalează prin pip și este disponibil în toate imaginile Docker populare, inclusiv Alpine, Ubuntu și imaginile oficiale ale sistemelor CI Jenkins și GitLab. Acest lucru face din Httpie o alegere convenabilă pentru testarea automată a REST API și a microserviciilor.

Verificarea health-endpoint în deploy

Scenariul tipic — verificarea statusului API după deploy-ul aplicației. Httpie trimite o cerere la health-endpoint și se termină cu un cod nenul dacă răspunsul nu corespunde celui așteptat. Flagul --check-status returnează automat o eroare la codul de status >= 300.

bash
# Health check în scriptul de deploy
http --check-status GET https://api.staging.example.com/health
    status:="ok" && \
    echo "API este sănătos" || \
    echo "Verificarea API a eșuat"

Funcționalități avansate și pluginuri Httpie

Httpie acceptă pluginuri prin sistemul Package Index. Pluginurile adaugă noi tipuri de autentificare, formate de serializare și transporturi. Instalarea se face prin pip: pip install httpie-plugin-name. După instalare, pluginul este activat automat la următoarea pornire a Httpie.

Pluginuri populare Httpie

  • httpie-jwt-auth — obținerea și reînnoirea automată a tokenurilor JWT prin mecanismul refresh token.
  • httpie-oauth — suport pentru OAuth 2.0 Client Credentials și fluxul Authorization Code cu schimbarea automată a codului în token.
  • httpie-editor — deschide corpul cererii într-un editor de text (vim, nano, VS Code) înainte de trimitere.
  • httpie-image — afișează imaginile din răspuns direct în terminal (necesită kitty sau iTerm2).

Scripting și parsarea ieșirii

Httpie acceptă filtrarea de tip jq prin opțiunea --pretty=format și ieșirea compatibilă cu cURL prin --print. Flagul --quiet dezactivează ieșirea colorată pentru o lizibilitate mai bună în logurile CI. Pentru procesarea programatică a răspunsului folosiți flagul --body, care afișează doar corpul răspunsului, fără antete.

bash
# Extragerea unui câmp din răspunsul JSON cu jq
http GET https://api.example.com/users/1 | jq '.name'

# Afișarea doar a corpului răspunsului (fără antete)
http --body GET https://api.example.com/health

# Trimitere în lot cu date diferite din fișier
while read -r line; do
    http POST https://api.example.com/items $line
done < items.txt

Formate de ieșire și personalizare

Httpie acceptă formate de ieșire prin flagul --print: H (antetele cererii), B (corpul cererii), h (antetele răspunsului), b (corpul răspunsului). Combinația --print=hb afișează doar anteturile și corpul răspunsului. Flagul --pretty=all activează formatarea colorată cu indentare.

Scheme de culori personalizate

Httpie acceptă personalizarea prin variabila HTTPIE_COLORS. Setați culoarea pentru URL, antete, JSON și coduri de status. Sunt disponibile teme integrate: autumn, borland, fruity, monokai, native, tango pentru diferite terminale.

Ieșire în format JSON

Pentru procesarea programatică folosiți --body --pretty=none, care returnează JSON brut. Ieșirea compactă este utilă pentru trimiterea către jq, sed și alți parseri în automatizarea testării API-urilor în scripturi.

Formate de ieșire și personalizarea aspectului

Httpie acceptă mai multe formate de ieșire prin flagul --print: H (antetele cererii), B (corpul cererii), h (antetele răspunsului), b (corpul răspunsului). Combinația --print=hb afișează doar anteturile și corpul răspunsului, excluzând metainformațiile despre conexiune. Flagul --pretty=all activează formatarea colorată cu indentare pentru lizibilitate.

Scheme de culori personalizate

Httpie acceptă personalizarea culorilor prin variabila de mediu HTTPIE_COLORS. Puteți seta culoarea pentru URL, antete, chei JSON și coduri de status ale răspunsului. Sunt disponibile teme integrate: autumn, borland, fruity, monokai, native și tango pentru diferite tipuri de terminale și preferințe personale.

Ieșire în format JSON fără formatare

Pentru procesarea programatică a ieșirii folosiți combinația de flaguri --body --pretty=none, care returnează JSON brut, fără culori și indentare. Ieșirea compactă este utilă pentru trimiterea către jq, sed și alți parseri de consolă în automatizarea testării REST API în scripturile shell.

Întrebări frecvente

Cu ce este Httpie mai bun decât cURL standard?

Httpie oferă o sintaxă mai lizibilă, fără flaguri pentru operațiile de bază, serializare automată JSON, evidențiere colorată a răspunsului și suport integrat pentru sesiuni. cURL rămâne de neînlocuit pentru operații de nivel scăzut: lucrul cu FTP, SMTP și protocoale non-standard.

Cum trimit form-data prin Httpie?

Folosiți flagul -f (sau --form): http -f POST example.com name=John file@~/photo.jpg. Httpie va seta automat Content-Type: multipart/form-data. Fără flagul -f datele sunt trimise ca application/json.

Suportă Httpie HTTPS și certificate?

Da, Httpie acceptă HTTPS. Pentru certificatele auto-semnate folosiți flagul --verify=no. Pentru specificarea unui fișier CA personalizat: --verify=/path/to/cert.pem. Implicit, verificarea certificatului este activată.

Pot folosi Httpie pentru WebSocket?

Nu, Httpie nu acceptă WebSocket și este destinat exclusiv protocolului HTTP/HTTPS. Pentru WebSocket folosiți websocat sau wscat. Httpie se concentrează pe REST, GraphQL și operațiile cu fișiere.

Cum salvez răspunsul într-un fișier prin Httpie?

Folosiți flagul -d (download): http -d GET https://example.com/file.zip. Httpie va salva fișierul cu numele original din antetul Content-Disposition sau din URL. Pentru un nume personalizat specificați -o output.zip.

Rezumat

  • Httpie — client HTTP de consolă cu sintaxă intuitivă, JSON implicit și ieșire colorată.
  • Sintaxa de bază http [method] URL [key=value] [Header:value] nu necesită flaguri pentru majoritatea cererilor.
  • Serializarea JSON automată: key=value devine câmp JSON, key:=value pentru numere și valori booleene.
  • Sesiunile salvează cookie-uri și antete între cereri pentru testarea endpoint-urilor autentificate.
  • Autentificarea acceptă scheme Basic, Digest, Bearer și personalizate prin flagul --auth-type.
  • Integrarea CI/CD cu --check-status și dependențe zero face din Httpie un instrument convenabil pentru scripturile de deploy.
  • Încărcarea fișierelor prin multipart form-data cu flagul -f și sintaxa key@file.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și