Dalam proses pengembangan perangkat lunak modern, berinteraksi dengan Application Programming Interface (API) adalah rutinitas harian. Meskipun banyak alat berbasis antarmuka grafis yang tersedia, perintah cURL tetap menjadi pilihan utama bagi para pengembang karena kecepatannya, fleksibilitasnya, dan ketersediaannya di hampir semua sistem operasi. Utilitas baris perintah ini memungkinkan Anda mentransfer data menggunakan berbagai protokol jaringan, dengan HTTP dan HTTPS sebagai yang paling sering digunakan untuk pengujian API.
Artikel ini akan memandu Anda melalui penggunaan dasar hingga teknik lanjutan perintah cURL untuk menguji, mengevaluasi, dan mendebug endpoint API secara langsung dari terminal komputer Anda.
Mengenal Dasar Perintah cURL
Pada bentuknya yang paling sederhana, cURL digunakan untuk mengambil konten dari sebuah URL. Jika Anda membuka terminal atau command prompt dan mengetikkan perintah berikut, cURL akan mengunduh dan menampilkan kode HTML atau respons teks dari server tujuan:
curl https://jsonplaceholder.typicode.com/posts/1
Secara bawaan, jika Anda tidak menentukan metode HTTP apa pun, cURL akan menggunakan metode GET. Respons dari server akan langsung dicetak ke layar terminal (standard output). Ini sangat berguna untuk pemeriksaan cepat guna memastikan bahwa sebuah endpoint aktif dan mengembalikan data yang diharapkan tanpa perlu membuka peramban web.
Mengirim Data dengan Metode POST dan PUT
Pengujian API jarang berhenti pada pengambilan data saja. Anda sering kali perlu mengirimkan data baru ke server atau memperbarui data yang sudah ada. Untuk melakukan ini, Anda dapat menggunakan opsi -X atau --request diikuti dengan nama metode HTTP yang diinginkan, serta opsi -d untuk menyertakan muatan data.
Berikut adalah contoh cara mengirimkan data dalam format JSON menggunakan metode POST:
curl -X POST https://jsonplaceholder.typicode.com/posts \
-H "Content-Type: application/json" \
-d '{"title":"foo","body":"bar","userId":1}'
Pada perintah di atas, opsi -H digunakan untuk menambahkan header HTTP. Menyertakan Content-Type: application/json sangat penting agar server penerima tahu bagaimana cara memproses isi data yang Anda kirimkan. Tanpa header ini, beberapa server API mungkin menolak permintaan Anda atau salah mengartikan format datanya. Pendekatan serupa juga berlaku saat Anda ingin menggunakan metode PUT atau PATCH untuk memperbarui sumber daya yang ada di server.
Menyertakan Header Autentikasi
Sebagian besar API produksi dilindungi oleh mekanisme keamanan yang mengharuskan klien untuk membuktikan identitasnya. Dua metode autentikasi yang paling umum adalah penggunaan token pembawa (Bearer Token) dan kunci API (API Key). Perintah cURL menangani keduanya dengan mudah melalui parameter header.

Untuk autentikasi berbasis Bearer Token, Anda cukup menyisipkan token ke dalam header Authorization seperti ini:
curl -H "Authorization: Bearer TOKEN_ANDA_DISINI" \
https://api.contoh.com/data-rahasia
Sementara itu, jika layanan yang Anda gunakan mewajibkan pengiriman kunci API melalui header khusus, Anda bisa menyesuaikannya dengan nama header yang diminta oleh dokumentasi API tersebut. Memahami cara menyisipkan header ini adalah bagian krusial dari penguasaan perintah cURL untuk integrasi sistem yang aman.
Teknik Debugging Respons HTTP
Ketika sebuah permintaan API gagal atau menghasilkan perilaku yang tidak terduga, kemampuan mendebug menjadi sangat berharga. cURL menyediakan beberapa opsi bawaan yang dirancang khusus untuk inspeksi mendalam terhadap lalu lintas jaringan.
Menampilkan Header Respons
Terkadang, informasi terpenting tidak berada di dalam badan respons, melainkan pada headernya. Opsi -i atau --include akan memerintahkan cURL untuk mencetak header respons HTTP bersamaan dengan datanya. Hal ini sangat membantu ketika Anda perlu memeriksa status kode, kebijakan cache, atau batas laju (rate limit) yang diterapkan oleh server.
curl -i https://jsonplaceholder.typicode.com/posts/1
Jika Anda hanya ingin melihat header tanpa memedulikan isi datanya, gunakan opsi -I (huruf i kapital) untuk mengirimkan permintaan dengan metode HEAD.
Mode Verbose dan Pencatatan Log
Untuk analisis yang jauh lebih rinci, termasuk melihat proses resolusi DNS, negosiasi TLS, dan pertukaran header permintaan maupun respons secara utuh, aktifkan mode verbose dengan opsi -v:
curl -v https://jsonplaceholder.typicode.com/posts/1
Karena keluaran mode verbose bisa sangat panjang dan memenuhi layar terminal, praktik terbaik adalah mengarahkannya ke sebuah file teks menggunakan opsi --stderr atau operator pengalihan standar shell. Informasi detail ini sangat esensial saat Anda harus melaporkan masalah koneksi kepada tim infrastruktur atau penyedia layanan pihak ketiga. Pemahaman tentang alur jaringan ini juga sejalan dengan prinsip dasar cara kerja protokol internet yang lebih luas.
Mengelola Sesi dan Menyimpan Output
Dalam skenario pengujian yang melibatkan alur kerja multi-langkah, Anda mungkin perlu mempertahankan sesi login. cURL mendukung pengelolaan cookie melalui opsi -b untuk membaca cookie dari file dan -c untuk menulis cookie yang diterima dari server ke dalam file. Fitur ini memungkinkan Anda mensimulasikan pengalaman pengguna yang berkelanjutan melalui antarmuka baris perintah.

Selain itu, alih-alih menampilkan hasil di layar, Anda dapat menyimpan respons langsung ke dalam berkas lokal menggunakan opsi -o (untuk nama file tertentu) atau -O (untuk menggunakan nama file asli dari URL). Ini sangat berguna saat Anda menguji endpoint yang mengembalikan dokumen biner seperti PDF atau gambar.
Kesimpulan
Referensi terkait: perbedaan webhook dan polling untuk integrasi API serta dokumentasi resmi cURL.
Menguasai perintah cURL memberikan Anda kendali penuh dan kecepatan tinggi dalam menguji serta mendebug API web. Dari sekadar mengambil data dengan metode GET, mengirimkan muatan JSON yang kompleks, menyisipkan header autentikasi, hingga membongkar detail koneksi melalui mode verbose, cURL adalah utilitas serbaguna yang wajib dipahami oleh setiap pengembang. Dengan berlatih menggunakan variasi opsi yang telah dibahas di atas, Anda dapat mempercepat alur kerja pengembangan dan memecahkan masalah integrasi jaringan dengan jauh lebih efisien langsung dari terminal Anda.
