HTTPie adalah alat baris perintah yang memungkinkan Anda berinteraksi dengan server HTTP dengan cara yang mudah digunakan. Ia memiliki sintaks yang sederhana dan ekspresif, mendukung JSON dan data formulir, menangani autentikasi dan header, serta menampilkan output yang berwarna dan diformat. Ia juga memiliki beberapa fitur lanjutan, seperti sesi, plugin, dan proxy, yang membuatnya semakin kuat dan serbaguna.
Dalam postingan blog ini, saya akan menunjukkan cara menginstal dan menggunakan HTTPie, dan bagaimana ia dapat membantu Anda menguji dan men-debug API Anda dengan mudah dan efisien. Saya juga akan berbagi beberapa tips dan trik yang saya pelajari selama ini, dan beberapa sumber daya yang dapat Anda gunakan untuk mempelajari lebih lanjut tentang HTTPie.
Cara Menginstal HTTPie
Langkah pertama untuk menggunakan HTTPie adalah menginstalnya di sistem Anda. HTTPie ditulis dalam Python, dan Anda dapat menginstalnya menggunakan pip, pengelola paket Python. Untuk melakukannya, buka terminal Anda dan jalankan perintah berikut:
pip install --upgrade httpie
Ini akan menginstal versi terbaru HTTPie di sistem Anda, dan juga meningkatkan versi yang ada jika Anda memilikinya. Anda dapat memeriksa versi HTTPie dengan menjalankan:
http --version
Anda akan melihat sesuatu seperti ini:
http 2.5.0
HTTPie - a CLI, cURL-like tool for humans.
https://httpie.io
Jika Anda melihat output ini, selamat! Anda telah berhasil menginstal HTTPie dan Anda siap untuk menggunakannya.

Cara Mengirim Permintaan HTTP dengan HTTPie
Sintaks dasar HTTPie adalah:
http [flags] [METHOD] URL [ITEM [ITEM]]
Di mana:
flags
adalah argumen opsional yang memodifikasi perilaku HTTPie, seperti-v
untuk mode verbose,-h
untuk bantuan, atau-f
untuk mengikuti pengalihan.METHOD
adalah metode HTTP yang akan digunakan, seperti GET, POST, PUT, PATCH, DELETE, dll. Jika dihilangkan, HTTPie secara default menggunakan GET.URL
adalah URL server HTTP untuk berinteraksi, sepertihttps://example.com/api/users
.ITEM
adalah pasangan nilai-kunci opsional yang menentukan data permintaan, sepertiname=John
untuk data formulir, atauname:=John
untuk data JSON. Anda juga dapat menggunakanITEM
untuk menentukan header, sepertiUser-Agent:HTTPie
.
Misalnya, untuk mengirim permintaan GET ke https://example.com/api/users
, Anda cukup menjalankan:
http https://example.com/api/users
Ini akan mengirim permintaan GET ke URL, dan menampilkan respons dengan cara yang berwarna dan diformat. Anda akan melihat sesuatu seperti ini:
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 326
Content-Type: application/json; charset=utf-8
Date: Thu, 08 Feb 2024 05:43:25 GMT
ETag: W/"146-8a9e8c9f"
Server: nginx/1.19.6
X-Powered-By: Express
[
{
"id": 1,
"name": "John",
"email": "john@example.com"
},
{
"id": 2,
"name": "Jane",
"email": "jane@example.com"
},
{
"id": 3,
"name": "Bob",
"email": "bob@example.com"
}
]
Seperti yang Anda lihat, HTTPie menampilkan baris status respons, header, dan body dengan cara yang jelas dan mudah dibaca. Ia juga menggunakan warna untuk menyoroti berbagai bagian respons, seperti hijau untuk header, biru untuk kunci JSON, dan kuning untuk nilai JSON.

Anda juga dapat mengirim metode HTTP lainnya dengan HTTPie, seperti POST, PUT, PATCH, atau DELETE, dengan menentukan metode sebelum URL. Misalnya, untuk mengirim permintaan POST ke https://example.com/api/users
dengan beberapa data JSON, Anda dapat menjalankan:
http POST https://example.com/api/users name=John email=john@example.com
Ini akan mengirim permintaan POST ke URL, dengan data JSON berikut di body permintaan:
{
"name": "John",
"email": "john@example.com"
}
Anda juga dapat menggunakan operator :=
untuk menentukan nilai JSON, seperti name:="John"
atau age:=25
. Ini berguna ketika Anda ingin mengirim nilai non-string, seperti angka, boolean, array, atau objek.
HTTPie akan menampilkan respons dengan cara yang sama seperti sebelumnya, tetapi dengan kode status dan body yang berbeda. Anda akan melihat sesuatu seperti ini:
HTTP/1.1 201 Created
Connection: keep-alive
Content-Length: 110
Content-Type: application/json; charset=utf-8
Date: Thu, 08 Feb 2024 05:43:25 GMT
ETag: W/"6e-8a9e8c9f"
Location: /api/users/4
Server: nginx/1.19.6
X-Powered-By: Express
{
"id": 4,
"name": "John",
"email": "john@example.com"
}
Seperti yang Anda lihat, HTTPie menampilkan kode status respons sebagai 201 Created, yang menunjukkan bahwa sumber daya baru dibuat di server. Ia juga menampilkan header Location, yang menunjuk ke URL sumber daya yang baru dibuat. Body respons berisi representasi JSON dari pengguna baru.
Anda dapat menggunakan sintaks yang sama untuk mengirim metode HTTP lainnya, seperti PUT, PATCH, atau DELETE, dengan mengganti nama metode. Misalnya, untuk memperbarui nama pengguna dengan id 4, Anda dapat menjalankan:
http PATCH https://example.com/api/users/4 name=Jack
Ini akan mengirim permintaan PATCH ke URL, dengan data JSON berikut di body permintaan:
{
"name": "Jack"
}
HTTPie akan menampilkan respons dengan cara yang sama seperti sebelumnya, tetapi dengan kode status dan body yang berbeda. Anda akan melihat sesuatu seperti ini:
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 110
Content-Type: application/json; charset=utf-8
Date: Thu, 08 Feb 2024 05:43:25 GMT
ETag: W/"6e-8a9e8c9f"
Server: nginx/1.19.6
X-Powered-By: Express
{
"id": 4,
"name": "Jack",
"email": "john@example.com"
}
Seperti yang Anda lihat, HTTPie menampilkan kode status respons sebagai 200 OK, yang menunjukkan bahwa sumber daya berhasil diperbarui. Body respons berisi representasi JSON dari pengguna yang diperbarui.
Anda juga dapat menggunakan HTTPie untuk mengirim data formulir, dengan menggunakan operator =
alih-alih operator :=
. Misalnya, untuk mengirim permintaan POST ke https://example.com/api/login
dengan beberapa data formulir, Anda dapat menjalankan:
http POST https://example.com/api/login username=John password=secret
Ini akan mengirim permintaan POST ke URL, dengan data formulir berikut di body permintaan:
username=John&password=secret
HTTPie akan menampilkan respons dengan cara yang sama seperti sebelumnya, tetapi dengan jenis konten dan body yang berbeda. Anda akan melihat sesuatu seperti ini:
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 32
Content-Type: text/plain; charset=utf-8
Date: Thu, 08 Feb 2024 05:43:25 GMT
ETag: W/"20-8a9e8c9f"
Server: nginx/1.19.6
X-Powered-By: Express
Login successful. Welcome, John!
Seperti yang Anda lihat, HTTPie menampilkan jenis konten respons sebagai text/plain, yang menunjukkan bahwa body respons adalah teks biasa. Body respons berisi pesan sederhana yang mengonfirmasi login.

Cara Memeriksa Body dan Header Respons dengan HTTPie
Salah satu fitur hebat HTTPie adalah ia secara otomatis mengurai dan memformat body dan header respons, tergantung pada jenis konten. Misalnya, jika respons adalah JSON, HTTPie akan menampilkannya dengan cara yang cantik dan berwarna, seperti yang kita lihat sebelumnya. Jika respons adalah HTML, HTTPie akan menampilkannya sebagai teks mentah, tetapi dengan penyorotan sintaks. Jika respons adalah gambar, HTTPie akan menampilkannya sebagai data biner, tetapi dengan petunjuk jenis dan ukuran gambar.
Anda juga dapat menggunakan beberapa flag untuk memodifikasi cara HTTPie menampilkan respons. Misalnya, Anda dapat menggunakan flag -b
atau --body
untuk hanya menampilkan body respons, tanpa header. Anda dapat menggunakan flag -h
atau --headers
untuk hanya menampilkan header respons, tanpa body. Anda dapat menggunakan flag -p
atau --print
untuk menentukan bagian mana dari permintaan dan respons yang akan dicetak, menggunakan karakter berikut:
H
: Header permintaanB
: Body permintaanh
: Header responsb
: Body respons
Misalnya, untuk hanya menampilkan header permintaan dan body respons, Anda dapat menjalankan:
http -p HB https://example.com/api/users
Ini akan menampilkan sesuatu seperti ini:
GET /api/users HTTP/1.1
Accept: application/json, */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: example.com
User-Agent: HTTPie/2.5.0
[
{
"id": 1,
"name": "John",
"email": "john@example.com"
},
{
"id": 2,
"name": "Jane",
"email": "jane@example.com"
},
{
"id": 3,
"name": "Bob",
"email": "bob@example.com"
}
]
Seperti yang Anda lihat, HTTPie menampilkan header permintaan dan body respons, tetapi bukan header respons atau body permintaan.
Anda juga dapat menggunakan flag -j
atau --json
untuk memaksa HTTPie memperlakukan respons sebagai JSON, bahkan jika jenis konten bukan application/json. Ini berguna ketika server tidak mengirim jenis konten yang benar, atau ketika Anda ingin mengurai respons non-JSON sebagai JSON. Misalnya, untuk mengurai respons teks biasa sebagai JSON, Anda dapat menjalankan:
http -j https://example.com/api/hello
Ini akan menampilkan sesuatu seperti ini:
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 13
Content-Type: text/plain; charset=utf-8
Date: Thu, 08 Feb 2024 05:43:25 GMT
ETag: W/"d-8a9e8c9f"
Server: nginx/1.19.6
X-Powered-By: Express
{
"hello": "world"
}
Seperti yang Anda lihat, HTTPie mengurai respons teks biasa sebagai JSON, dan menampilkannya dengan cara yang cantik dan berwarna.
Anda juga dapat menggunakan flag -o
atau --output
untuk menyimpan body respons ke file, alih-alih menampilkannya di terminal. Ini berguna ketika Anda ingin mengunduh file dari server, seperti gambar, PDF, atau file ZIP. Misalnya, untuk mengunduh gambar dari https://example.com/api/image
, Anda dapat menjalankan:
http -o image.jpg https://example.com/api/image
Ini akan menyimpan gambar ke file bernama image.jpg
di direktori Anda saat ini. Anda juga dapat menggunakan flag -d
atau --download
untuk secara otomatis menghasilkan nama file berdasarkan URL dan jenis konten. Misalnya, untuk mengunduh gambar yang sama, Anda dapat menjalankan:
http -d https://example.com/api/image
Ini akan menyimpan gambar ke file bernama image-20240208-054325.jpg
di direktori Anda saat ini, menggunakan tanggal dan waktu sebagai akhiran.
Seperti yang Anda lihat, HTTPie memberi Anda banyak opsi untuk memeriksa body dan header respons, dan untuk menyimpan respons ke file. Anda dapat menggunakan opsi ini untuk menguji dan men-debug API Anda, dan untuk memeriksa konten dan format respons.
Keterbatasan HTTPie
HTTPie adalah alat baris perintah yang kuat dan mudah digunakan untuk berinteraksi dengan server dan API HTTP. Namun, ia juga memiliki beberapa keterbatasan, seperti:
- Ia tidak mendukung protokol GraphQL, WebSocket, atau gRPC, yang semakin populer untuk pengembangan web modern.
- Ia tidak memiliki antarmuka pengguna grafis (GUI) atau versi web, yang mungkin lebih disukai oleh beberapa pengguna yang tidak nyaman dengan terminal.
- Ia tidak memiliki fitur bawaan untuk desain API, dokumentasi, mocking, atau pengujian, yang penting untuk pengembangan dan kolaborasi API.
Mengapa Anda Harus Menggunakan Apidog
Apidog adalah platform terintegrasi untuk desain, debugging, pengembangan, mock, dan pengujian API. Ia menggabungkan fungsionalitas Postman, Swagger, Mock, dan JMeter dalam satu alat. Anda mungkin ingin menggunakan Apidog jika Anda mencari:
- Solusi komprehensif dan kolaboratif untuk seluruh siklus hidup API, mulai dari desain hingga pengujian, mocking, dan dokumentasi.
- Alat yang mendukung berbagai protokol, seperti HTTP, GraphQL, WebSocket, dan gRPC.
- Alat yang memiliki aplikasi desktop dan versi web, serta antarmuka baris perintah (CLI).
- Alat yang mengimplementasikan desain API-first, memfasilitasi sinkronisasi API, spesifikasi, dan modifikasi yang mudah di seluruh siklus hidup API.
Langkah 1. Buka Apidog dan klik "API Baru" untuk membuat API baru untuk diuji.

Langkah 2. Pilih metode HTTP yang akan digunakan untuk API dan masukkan URL endpoint.

Langkah 3. Masukkan informasi yang diperlukan seperti parameter sesuai dengan spesifikasi API dan klik tombol "Kirim" untuk mengirim permintaan API dan mendapatkan respons.

kesimpulan
HTTPie adalah alat yang ampuh dan mudah digunakan yang memungkinkan Anda berkomunikasi dengan server dan API HTTP dari terminal Anda. Ia memiliki banyak fitur dan opsi yang memudahkan untuk menyesuaikan dan memformat permintaan dan respons Anda. Anda dapat menggunakan HTTPie untuk menguji, men-debug, dan menjelajahi API, serta mengotomatiskan tugas dan alur kerja.
Jika Anda ingin menggunakan platform yang lebih terintegrasi untuk desain, debugging, pengembangan, mock, dan pengujian API, Anda juga dapat mencoba Apidog. Apidog adalah alat yang menghubungkan seluruh siklus hidup API, mulai dari desain hingga pengujian, mocking, dan dokumentasi.