Httpie: vad är det, HTTP-klient för kommandoraden

Författare: IT Sectr Publicerad: 2026-05-08 Lästid: 8 min

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 — en modern ersättare för cURL med lättläst syntax, färgmarkering och inbyggd JSON-serialisering.
  • Syntax för begäran byggs enligt mönstret: http [method] URL [header:value] [key=value] utan extra flaggor.
  • JSON som standard — begärandets innehåll tolkas som ett JSON-objekt, Content-Type-rubriken läggs till automatiskt.
  • Sessioner sparar cookies och rubriker mellan begäranden, vilket är praktiskt för att testa autentiserade slutpunkter.
  • Plugin-program utökar Httpie med stöd för ytterligare format, autentiseringstyper och anpassade transportkanaler.

Vad är Httpie och hur skiljer det sig från cURL

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.

Jämförelse av cURL och Httpie

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ärdcURLHttpie
GET-begärancurl 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
Rubrikcurl -H "Authorization: Bearer token123" https://api.example.comhttp GET https://api.example.com Authorization:"Bearer token123"

Syntax för begäranden i Httpie

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

Argumenttyper

  • Header:Value — rubriker för begäran med kolon, utan mellanslag efter kolon: Authorization:"Bearer token".
  • key=value — fält i JSON-objektet i begärandets innehåll: name=John age=30.
  • key:=value — JSON-värden som inte är strängar (tal, booleska värden, arrayer): active:=true tags:=["dev","test"].
  • key@file — ladda ett värde från en fil: 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.

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

Arbeta med JSON och filer

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.

Ladda upp filer och binärdata

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

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

Hantera sessioner och cookies

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.

Exempel på sessionstestning

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.

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

Autentisering och rubriker

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.

OAuth 2.0 och Bearer Token

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.

Använda Httpie i CI/CD-skript

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.

Kontroll av health-slutpunkt vid driftsättning

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.

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

Avancerade funktioner och plugin-program i Httpie

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.

Populära Httpie-plugin-program

  • httpie-jwt-auth — automatisk hämtning och förnyelse av JWT-token via mekanismen refresh token.
  • httpie-oauth — stöd för OAuth 2.0 Client Credentials och Authorization Code-flödet med automatiskt byte av kod mot token.
  • httpie-editor — öppnar begärandets innehåll i en textredigerare (vim, nano, VS Code) innan sändning.
  • httpie-image — visar bilder från svaret direkt i terminalen (kräver kitty eller iTerm2).

Skript och parsning av utdata

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.

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

Utdataformat och anpassning

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.

Anpassade färgscheman

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.

Utdata i JSON-format

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.

Utdataformat och anpassning av utseendet

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.

Anpassade färgscheman

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.

Utdata i JSON-format utan formatering

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

På vilket sätt är Httpie bättre än vanlig cURL?

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.

Hur skickar jag form-data via Httpie?

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.

Stödjer Httpie HTTPS och certifikat?

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.

Kan jag använda Httpie för WebSocket?

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.

Hur sparar jag ett svar till en fil via Httpie?

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

  • Httpie — en konsolbaserad HTTP-klient med intuitiv syntax, JSON som standard och färgad utdata.
  • Grundläggande syntax http [method] URL [key=value] [Header:value] kräver inga flaggor för de flesta begäranden.
  • JSON-serialisering är automatisk: key=value blir ett JSON-fält, key:=value för tal och booleska värden.
  • Sessioner sparar cookies och rubriker mellan begäranden för att testa autentiserade slutpunkter.
  • Autentisering stödjer Basic, Digest, Bearer och anpassade scheman via flaggan --auth-type.
  • CI/CD-integration med --check-status och noll beroenden gör Httpie bekvämt för driftsättningsskript.
  • Filuppladdning via multipart form-data med flaggan -f och syntaxen key@file.

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.

Diskutera projektet

Läs också