Httpie — en konsolbaserad HTTP-klient med lättläst syntax och färgad utdata, avsedd för att testa API:er från kommandoraden. Verktyget använder en intuitiv syntax: http GET https://api.example.com/users utan att man behöver ange flaggor för rubriker och begärandets innehåll. Enligt Httpie CLI Documentation (2026) stödjer verktyget som standard JSON, sessioner, autentisering och plugin-program.
Huvudpunkter
Httpie (eller HTTPie) — ett konsolbaserat verktyg skrivet i Python som förenklar att skicka HTTP-begäranden jämfört med cURL. Den största skillnaden är en syntax som ligger nära naturligt språk: argument separeras med mellanslag, rubriker anges med kolon och JSON-data — med likhetstecken, utan att citattecken behöver escaped.
Samma POST-begäran kräver i cURL minst tre flaggor (-X, -H, -d) och manuell escaping av JSON. Httpie gör samma sak med tre ord utan flaggor, ställer automatiskt in Content-Type: application/json och färgar utdata. Svaret formateras som standard med indrag och syntaxmarkering.
| Åtgärd | cURL | Httpie |
|---|---|---|
| GET-begäran | 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 |
| Rubrik | curl -H "Authorization: Bearer token123" https://api.example.com | http GET https://api.example.com Authorization:"Bearer token123" |
Httpie använder ett enhetligt kommandoradsformat utan flaggor för grundparametrarna. HTTP-metoden anges som första argument (GET, POST, PUT, DELETE, PATCH), URL:en — som andra. Om metoden utelämnas väljer Httpie automatiskt GET (för begäranden utan innehåll) eller POST (med innehåll).
Authorization:"Bearer token".name=John age=30.active:=true tags:=["dev","test"].avatar@~/photo.jpg.Httpie avgör automatiskt datatypen: om key=value skickas — skickas innehållet som JSON. Om rå text skickas via --raw — som vanlig text. Formatet form-data aktiveras med flaggan -f.
# POST-begäran med JSON-data och rubrik
http POST https://api.example.com/users \
name="John Doe" \
email="john@example.com" \
role:="admin" \
Authorization:"Bearer test123"
# Svar med markering och Pretty-print
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 42,
"name": "John Doe"
}
JSON-serialisering fungerar automatiskt i Httpie: ett värde som skickas som key=value blir ett strängfält i JSON. För tal och booleska värden används key:=value. Kapslade objekt skapas med punktnotation: address.city=Moscow.
Httpie stödjer formatet multipart/form-data för att ladda upp filer och data via syntaxen key@path. Om en fils innehåll behöver skickas som rå innehåll i begäran används inmatningsomdirigering: http POST example.com < file.json. För att ladda ner svaret till en fil används flaggan -d (download).
# Skicka JSON från fil
http POST https://api.example.com/users < user.json
# Ladda upp fil via multipart
http -f POST https://api.example.com/upload \
photo@~/photo.jpg \
description="Profile photo"
Sessioner i Httpie sparar tillstånd mellan begäranden: cookies, rubriker och autentiseringsparametrar. En session skapas med flaggan --session=name. Sessionsdata lagras i en JSON-fil i mappen ~/.httpie/sessions/. En session med suffixet :readonly uppdateras inte efter en begäran.
Först utförs ett POST till /auth/login med inloggningsuppgifter — servern returnerar sessionscookien. Alla efterföljande begäranden till skyddade slutpunkter inom samma session skickar automatiskt den sparade cookien, vilket simulerar webbläsarens beteende när man testar API:et i en mobilapp.
# Steg 1: autentisering
http --session=app-test POST https://api.example.com/auth/login \
username="dev" password="secret"
# Steg 2: begäran med sparad sessionscookie
http --session=app-test GET https://api.example.com/users/me
Httpie stödjer alla viktigaste autentiseringstyperna via flaggor: -a user:pass för Basic Auth, --auth-type=digest för Digest, --auth-type=bearer TOKEN för Bearer Token. Anpassade rubriker läggs till som HeaderName:value var som helst i kommandot.
För att testa API:er med OAuth 2.0 överförs token via Authorization-rubriken. Httpie hanterar inte tokenens livscykel på kärnnivå — det gör ett externt skript. Kommandot http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource motsvarar att explicit ange rubriken med token.
Httpie passar utmärkt för CI/CD-pipelines tack vare noll beroenden (förutom Python) och lättläst utdata. Kommandon läses enkelt i loggar utan extra parsning. Verktyget installeras via pip och finns i alla populära Docker-avbildningar, inklusive Alpine, Ubuntu och de officiella avbildningarna för CI-systemen Jenkins och GitLab. Det gör Httpie till ett bekvämt val för automatiserad testning av REST API:er och mikrotjänster.
Ett typiskt scenario — kontroll av API-status efter driftsättning av appen. Httpie skickar en begäran till health-slutpunkten och avslutas med en nollskild kod om svaret inte motsvarar det förväntade. Flaggan --check-status returnerar automatiskt ett fel vid statuskod >= 300.
# Health check i driftsättningsskript
http --check-status GET https://api.staging.example.com/health
status:="ok" && \
echo "API:et är friskt" || \
echo "API-kontrollen misslyckades"
Httpie stödjer plugin-program via systemet Package Index. Plugin-program lägger till nya autentiseringstyper, serialiseringsformat och transportkanaler. Installation görs via pip: pip install httpie-plugin-name. Efter installation aktiveras plugin-programmet automatiskt vid nästa start av Httpie.
Httpie stödjer filtrering som liknar jq via alternativet --pretty=format och cURL-kompatibel utdata via --print. Flaggan --quiet stänger av färgad utdata för bättre läsbarhet i CI-loggarna. För programmeringsmässig bearbetning av svaret använder du flaggan --body, som visar bara svarets innehåll utan rubriker.
# Extrahera fält från JSON-svar med jq
http GET https://api.example.com/users/1 | jq '.name'
# Visa bara svarets innehåll (utan rubriker)
http --body GET https://api.example.com/health
# Batchsändning med olika data från fil
while read -r line; do
http POST https://api.example.com/items $line
done < items.txt
Httpie stödjer utdataformat via flaggan --print: H (rubriker i begäran), B (begärandets innehåll), h (rubriker i svaret), b (svarets innehåll). Kombinationen --print=hb visar bara svarets rubriker och innehåll. Flaggan --pretty=all aktiverar färgad formatering med indrag.
Httpie stödjer anpassning via variabeln HTTPIE_COLORS. Ställ in färg för URL, rubriker, JSON och statuskoder. Det finns inbyggda teman: autumn, borland, fruity, monokai, native, tango för olika terminaler.
För programmeringsmässig bearbetning använder du --body --pretty=none, som returnerar rå JSON. Kompakt utdata är användbar för att skicka vidare till jq, sed och andra parsningsverktyg vid automatisering av API-testning i skript.
Httpie stödjer flera utdataformat via flaggan --print: H (rubriker i begäran), B (begärandets innehåll), h (rubriker i svaret), b (svarets innehåll). Kombinationen --print=hb visar bara svarets rubriker och innehåll, med undantag av metainformation om anslutningen. Flaggan --pretty=all aktiverar färgad formatering med indrag för läsbarhet.
Httpie stödjer anpassning av färger via miljövariabeln HTTPIE_COLORS. Du kan ställa in färg för URL, rubriker, JSON-nycklar och svarets statuskoder. Det finns inbyggda teman: autumn, borland, fruity, monokai, native och tango för olika terminaltyper och personliga preferenser.
För programmeringsmässig bearbetning av utdatan använder du kombinationen av flaggor --body --pretty=none, som returnerar rå JSON utan färger och indrag. Kompakt utdata är användbar för att skicka vidare till jq, sed och andra konsolbaserade parsningsverktyg vid automatisering av REST API-testning i shell-skript.
Vanliga frågor
Httpie erbjuder en mer lättläst syntax utan flaggor för grundläggande operationer, automatisk JSON-serialisering, färgmarkering av svaret och inbyggt stöd för sessioner. cURL förblir oumbärligt för operationer på låg nivå: arbete med FTP, SMTP och icke-standardprotokoll.
Använd flaggan -f (eller --form): http -f POST example.com name=John file@~/photo.jpg. Httpie ställer automatiskt in Content-Type: multipart/form-data. Utan flaggan -f skickas data som application/json.
Ja, Httpie stödjer HTTPS. För självsignerade certifikat använder du flaggan --verify=no. För att ange en anpassad CA-fil: --verify=/path/to/cert.pem. Som standard är certifikatverifiering aktiverad.
Nej, Httpie stödjer inte WebSocket och är avsett enbart för HTTP/HTTPS-protokollet. För WebSocket använder du websocat eller wscat. Httpie fokuserar på REST, GraphQL och filoperationer.
Använd flaggan -d (download): http -d GET https://example.com/file.zip. Httpie sparar filen med det ursprungliga namnet från Content-Disposition-rubriken eller URL:en. För ett anpassat namn anger du -o output.zip.
Sammanfattning
http [method] URL [key=value] [Header:value] kräver inga flaggor för de flesta begäranden.Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också