Httpie: apa itu, klien HTTP untuk baris perintah

Penulis: IT Sectr Diterbitkan: 2026-05-08 Waktu membaca: 8 mnt

Httpie — klien HTTP konsol dengan sintaksis yang mudah dibaca manusia dan keluaran berwarna, dirancang untuk menguji API dari baris perintah. Alat ini menggunakan sintaksis intuitif: http GET https://api.example.com/users tanpa perlu menentukan flag untuk header dan isi permintaan. Menurut Httpie CLI Documentation (2026), utilitas ini mendukung JSON secara default, sesi, autentikasi, dan plugin.

Poin penting

  • Httpie — pengganti modern untuk cURL dengan sintaksis yang mudah dibaca, penyorotan warna, dan serialisasi JSON bawaan.
  • Sintaksis permintaan disusun dengan skema: http [method] URL [header:value] [key=value] tanpa flag tambahan.
  • JSON secara default — isi permintaan ditafsirkan sebagai objek JSON, header Content-Type ditambahkan secara otomatis.
  • Sesi menyimpan cookie dan header antar permintaan, yang nyaman untuk menguji endpoint yang terautentikasi.
  • Plugin memperluas Httpie dengan dukungan untuk format tambahan, jenis autentikasi, dan transport kustom.

Apa itu Httpie dan apa bedanya dengan cURL

Httpie (atau HTTPie) — utilitas konsol yang ditulis dalam Python, yang menyederhanakan pengiriman permintaan HTTP dibandingkan dengan cURL. Perbedaan utamanya adalah sintaksis yang mendekati bahasa alami: argumen dipisahkan dengan spasi, header ditentukan dengan titik dua, dan data JSON — dengan tanda sama dengan, tanpa perlu meng-escape tanda kutip.

Perbandingan cURL dan Httpie

Permintaan POST yang sama di cURL membutuhkan setidaknya tiga flag (-X, -H, -d) dan peng-escape-an JSON secara manual. Httpie melakukan hal yang sama dengan tiga kata tanpa flag, secara otomatis menetapkan Content-Type: application/json dan mewarnai keluaran. Respons diformat secara default dengan indentasi dan penyorotan sintaksis.

OperasicURLHttpie
Permintaan 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
Headercurl -H "Authorization: Bearer token123" https://api.example.comhttp GET https://api.example.com Authorization:"Bearer token123"

Sintaksis permintaan di Httpie

Httpie menggunakan format baris perintah terpadu tanpa flag untuk parameter dasar. Metode HTTP ditentukan sebagai argumen pertama (GET, POST, PUT, DELETE, PATCH), URL — sebagai argumen kedua. Jika metode dihilangkan, Httpie secara otomatis memilih GET (untuk permintaan tanpa isi) atau POST (dengan isi).

Jenis argumen

  • Header:Value — header permintaan dengan titik dua, tanpa spasi setelah titik dua: Authorization:"Bearer token".
  • key=value — kolom objek JSON di isi permintaan: name=John age=30.
  • key:=value — nilai JSON non-string (angka, nilai boolean, array): active:=true tags:=["dev","test"].
  • key@file — memuat nilai dari file: avatar@~/photo.jpg.

Httpie menentukan jenis data secara otomatis: jika key=value diberikan — isi dikirim sebagai JSON. Jika teks mentah diberikan melalui --raw — sebagai teks biasa. Format form-data diaktifkan dengan flag -f.

bash
# Permintaan POST dengan data JSON dan header
http POST https://api.example.com/users \
    name="John Doe" \
    email="john@example.com" \
    role:="admin" \
    Authorization:"Bearer test123"

# Respons dengan penyorotan dan Pretty-print
HTTP/1.1 201 Created
Content-Type: application/json
{
    "id": 42,
    "name": "John Doe"
}

Bekerja dengan JSON dan file

Serialisasi JSON di Httpie bekerja secara otomatis: nilai yang diberikan sebagai key=value menjadi kolom string JSON. Untuk angka dan nilai boolean digunakan key:=value. Objek bersarang dibuat dengan notasi titik: address.city=Moscow.

Mengunggah file dan data biner

Httpie mendukung format multipart/form-data untuk mengunggah file dan data melalui sintaksis key@path. Jika perlu mengirim isi file sebagai isi permintaan mentah, digunakan pengalihan input: http POST example.com < file.json. Untuk mengunduh respons ke file digunakan flag -d (download).

bash
# Mengirim JSON dari file
http POST https://api.example.com/users < user.json

# Mengunggah file melalui multipart
http -f POST https://api.example.com/upload \
    photo@~/photo.jpg \
    description="Profile photo"

Mengelola sesi dan cookie

Sesi di Httpie menyimpan status antar permintaan: cookie, header, dan parameter autentikasi. Sesi dibuat dengan flag --session=name. Data sesi disimpan dalam file JSON di folder ~/.httpie/sessions/. Sesi dengan akhiran :readonly tidak diperbarui setelah permintaan.

Contoh pengujian sesi

Pertama, POST ke /auth/login dengan kredensial dilakukan — server mengembalikan cookie sesi. Semua permintaan berikutnya ke endpoint yang dilindungi dalam sesi yang sama secara otomatis mengirim cookie yang tersimpan, yang meniru perilaku browser saat menguji API aplikasi seluler.

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

# Langkah 2: permintaan dengan cookie sesi tersimpan
http --session=app-test GET https://api.example.com/users/me

Autentikasi dan header

Httpie mendukung semua jenis autentikasi utama melalui flag: -a user:pass untuk Basic Auth, --auth-type=digest untuk Digest, --auth-type=bearer TOKEN untuk Bearer Token. Header kustom ditambahkan sebagai HeaderName:value di mana saja dalam perintah.

OAuth 2.0 dan Bearer Token

Untuk menguji API dengan OAuth 2.0, token diteruskan melalui header Authorization. Httpie tidak mengelola siklus hidup token di tingkat inti — ini dilakukan oleh skrip eksternal. Perintah http --auth-type=bearer --auth="$TOKEN" GET https://api.example.com/resource setara dengan menetapkan header dengan token secara eksplisit.

Menggunakan Httpie dalam skrip CI/CD

Httpie sangat cocok untuk pipeline CI/CD karena dependensi nol (selain Python) dan keluaran yang mudah dibaca. Perintah mudah dibaca dalam log tanpa penguraian tambahan. Alat ini diinstal melalui pip dan tersedia di semua image Docker populer, termasuk Alpine, Ubuntu, dan image resmi sistem CI Jenkins dan GitLab. Ini menjadikan Httpie pilihan yang nyaman untuk pengujian REST API dan mikrolayanan secara otomatis.

Memeriksa endpoint health saat deploy

Skenario umum — memeriksa status API setelah deploy aplikasi. Httpie mengirim permintaan ke endpoint health dan berakhir dengan kode bukan nol jika respons tidak sesuai dengan yang diharapkan. Flag --check-status otomatis mengembalikan kesalahan pada kode status >= 300.

bash
# Health check dalam skrip deploy
http --check-status GET https://api.staging.example.com/health
    status:="ok" && \
    echo "API sehat" || \
    echo "Pemeriksaan API gagal"

Fitur lanjutan dan plugin Httpie

Httpie mendukung plugin melalui sistem Package Index. Plugin menambahkan jenis autentikasi baru, format serialisasi, dan transport. Instalasi dilakukan melalui pip: pip install httpie-plugin-name. Setelah instalasi, plugin diaktifkan secara otomatis pada peluncuran Httpie berikutnya.

Plugin Httpie yang populer

  • httpie-jwt-auth — mendapatkan dan memperbarui token JWT secara otomatis melalui mekanisme refresh token.
  • httpie-oauth — dukungan OAuth 2.0 Client Credentials dan alur Authorization Code dengan pertukaran kode menjadi token secara otomatis.
  • httpie-editor — membuka isi permintaan di editor teks (vim, nano, VS Code) sebelum mengirim.
  • httpie-image — menampilkan gambar dari respons langsung di terminal (membutuhkan kitty atau iTerm2).

Pembuatan skrip dan penguraian keluaran

Httpie mendukung pemfilteran seperti jq melalui opsi --pretty=format dan keluaran yang kompatibel dengan cURL melalui --print. Flag --quiet menonaktifkan keluaran berwarna untuk keterbacaan yang lebih baik dalam log CI. Untuk pemrosesan respons secara terprogram gunakan flag --body, yang menampilkan hanya isi respons tanpa header.

bash
# Mengekstrak kolom dari respons JSON dengan jq
http GET https://api.example.com/users/1 | jq '.name'

# Menampilkan hanya isi respons (tanpa header)
http --body GET https://api.example.com/health

# Pengiriman massal dengan data berbeda dari file
while read -r line; do
    http POST https://api.example.com/items $line
done < items.txt

Format keluaran dan kustomisasi

Httpie mendukung format keluaran melalui flag --print: H (header permintaan), B (isi permintaan), h (header respons), b (isi respons). Kombinasi --print=hb menampilkan hanya header dan isi respons. Flag --pretty=all mengaktifkan pemformatan berwarna dengan indentasi.

Skema warna kustom

Httpie mendukung kustomisasi melalui variabel HTTPIE_COLORS. Atur warna untuk URL, header, JSON, dan kode status. Tersedia tema bawaan: autumn, borland, fruity, monokai, native, tango untuk berbagai terminal.

Keluaran dalam format JSON

Untuk pemrosesan terprogram gunakan --body --pretty=none, yang mengembalikan JSON mentah. Keluaran ringkas berguna untuk diteruskan ke jq, sed, dan parser lain saat mengotomatisasi pengujian API dalam skrip.

Format keluaran dan kustomisasi tampilan

Httpie mendukung beberapa format keluaran melalui flag --print: H (header permintaan), B (isi permintaan), h (header respons), b (isi respons). Kombinasi --print=hb menampilkan hanya header dan isi respons, tidak termasuk informasi meta tentang koneksi. Flag --pretty=all mengaktifkan pemformatan berwarna dengan indentasi untuk keterbacaan.

Skema warna kustom

Httpie mendukung kustomisasi warna melalui variabel lingkungan HTTPIE_COLORS. Anda dapat mengatur warna untuk URL, header, kunci JSON, dan kode status respons. Tersedia tema bawaan: autumn, borland, fruity, monokai, native dan tango untuk berbagai jenis terminal dan preferensi pribadi.

Keluaran dalam format JSON tanpa pemformatan

Untuk pemrosesan keluaran secara terprogram gunakan kombinasi flag --body --pretty=none, yang mengembalikan JSON mentah tanpa warna dan indentasi. Keluaran ringkas berguna untuk diteruskan ke jq, sed, dan parser konsol lain saat mengotomatisasi pengujian REST API dalam skrip shell.

Pertanyaan yang sering diajukan

Apa keunggulan Httpie dibanding cURL standar?

Httpie menawarkan sintaksis yang lebih mudah dibaca tanpa flag untuk operasi dasar, serialisasi JSON otomatis, penyorotan warna respons, dan dukungan sesi bawaan. cURL tetap tak tergantikan untuk operasi tingkat rendah: bekerja dengan FTP, SMTP, dan protokol non-standar.

Bagaimana cara mengirim form-data melalui Httpie?

Gunakan flag -f (atau --form): http -f POST example.com name=John file@~/photo.jpg. Httpie akan otomatis menetapkan Content-Type: multipart/form-data. Tanpa flag -f data dikirim sebagai application/json.

Apakah Httpie mendukung HTTPS dan sertifikat?

Ya, Httpie mendukung HTTPS. Untuk sertifikat yang ditandatangani sendiri gunakan flag --verify=no. Untuk menentukan file CA kustom: --verify=/path/to/cert.pem. Secara default, pemeriksaan sertifikat aktif.

Bisakah saya menggunakan Httpie untuk WebSocket?

Tidak, Httpie tidak mendukung WebSocket dan hanya dirancang untuk protokol HTTP/HTTPS. Untuk WebSocket gunakan websocat atau wscat. Httpie berfokus pada REST, GraphQL, dan operasi file.

Bagaimana cara menyimpan respons ke file melalui Httpie?

Gunakan flag -d (download): http -d GET https://example.com/file.zip. Httpie akan menyimpan file dengan nama asli dari header Content-Disposition atau URL. Untuk nama kustom tentukan -o output.zip.

Ringkasan

  • Httpie — klien HTTP konsol dengan sintaksis intuitif, JSON default, dan keluaran berwarna.
  • Sintaksis dasar http [method] URL [key=value] [Header:value] tidak memerlukan flag untuk sebagian besar permintaan.
  • Serialisasi JSON otomatis: key=value menjadi kolom JSON, key:=value untuk angka dan nilai boolean.
  • Sesi menyimpan cookie dan header antar permintaan untuk menguji endpoint yang terautentikasi.
  • Autentikasi mendukung skema Basic, Digest, Bearer, dan kustom melalui flag --auth-type.
  • Integrasi CI/CD dengan --check-status dan dependensi nol menjadikan Httpie nyaman untuk skrip deploy.
  • Mengunggah file melalui multipart form-data dengan flag -f dan sintaksis key@file.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga