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 (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.
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.
| Operasi | cURL | Httpie |
|---|---|---|
| Permintaan 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 |
| Header | curl -H "Authorization: Bearer token123" https://api.example.com | http GET https://api.example.com Authorization:"Bearer token123" |
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).
Authorization:"Bearer token".name=John age=30.active:=true tags:=["dev","test"].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.
# 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"
}
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.
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).
# 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"
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.
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.
# 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
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.
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.
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.
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.
# Health check dalam skrip deploy
http --check-status GET https://api.staging.example.com/health
status:="ok" && \
echo "API sehat" || \
echo "Pemeriksaan API gagal"
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.
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.
# 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
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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
http [method] URL [key=value] [Header:value] tidak memerlukan flag untuk sebagian besar permintaan.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.
Baca juga