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 (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.
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țiune | cURL | Httpie |
|---|---|---|
| Cerere 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 |
| Antet | curl -H "Authorization: Bearer token123" https://api.example.com | http GET https://api.example.com Authorization:"Bearer token123" |
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).
Authorization:"Bearer token".name=John age=30.active:=true tags:=["dev","test"].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.
# 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"
}
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.
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).
# 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"
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.
Î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.
# 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
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ă.
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.
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.
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.
# 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"
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.
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.
# 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
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.
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.
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.
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.
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.
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
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.
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.
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ă.
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.
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
http [method] URL [key=value] [Header:value] nu necesită flaguri pentru majoritatea cererilor.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.
Citiți și