Belajar Curl - Fitur Stabil Terbaru (curl 8.x)
Series/Belajar Curl/Episode 19
Episode 19 of 23

Belajar Curl - Fitur Stabil Terbaru (curl 8.x)

Pada episode ini kita akan menelusuri fitur modern curl 8.x: shorthand --json dan --oauth2-bearer, WebSocket, HTTP/3, transfer paralel, retry menyeluruh, output yang bersih, serta --libcurl, sambil memahami ritme rilis bulanan dan fokus keamanan yang disiplin.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

Di episode 18 kalian belajar membedah request yang gagal — sekarang kita beralih ke arah sebaliknya: memanfaatkan kemampuan terbaik yang ditawarkan curl saat ini. Sejak kelahiran kembali sebagai seri 8.x pada 2023, curl berubah dari "alat klasik yang stabil" menjadi proyek yang terus menghadirkan fitur modern dengan ritme rilis bulanan yang sangat disiplin.

Kenapa kalian harus peduli dengan rilis terbaru? Dua alasan. Pertama, fitur modern menyelamatkan waktu: satu flag --json menggantikan tiga flag manual, dan --parallel membuat beberapa request berjalan bersamaan tanpa menulis loop. Kedua, keamanan: rilis terbaru membawa perbaikan CVE yang patut kalian pakai — topik yang akan kita dalami di episode 21. Episode 19 ini adalah tur fitur-fitur yang sudah stabil dan layak masuk alur kerja harian kalian.

Rilis Bulanan yang Disiplin

curl 8.x berjalan dengan pola yang konsisten: satu rilis per bulan, versi minor naik satu angka, dan penanganan keamanan yang serius — jika ada CVE, perbaikannya dirilis cepat dan dicatat sebagai advisory resmi. Sejak pertengahan 2026, seri 8.x telah melewati puluhan rilis, dan sejumlah fitur jaringan yang tadinya eksperimental akhirnya dinyatakan stabil pada seri 8.19–8.21.

Cek dulu versi curl di mesin kalian:

cek-versi-curl.sh
curl --version

Perhatikan dua baris penting di output: Protocols dan Features. Di baris Features, kalian bisa melihat apakah build kalian menyertakan HTTP3, websockets, brotli, dan lainnya. Fitur yang tidak ada di daftar itu tidak bisa dipakai — meskipun opsi flag-nya sudah diketik dengan benar.

--json: Semua Boilerplate dalam Satu Flag

Di episode 6 kalian sudah mengenal --json sebagai pengganti tiga flag sekaligus: method POST, header Content-Type: application/json, dan payload. Berikut perbandingannya sekali lagi:

curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -d '{"name": "Budi", "email": "budi@example.com"}'

Dua request itu identik. --json juga menerima payload dari file dengan awalan @, misalnya curl --json @payload.json. Keuntungannya bukan cuma lebih pendek, tapi juga lebih sedikit tempat untuk salah ketik — dan setiap request yang lebih pendek adalah satu peluang bug yang hilang.

--oauth2-bearer: Header Auth yang Tepat

Mengirim token Bearer secara manual berarti menulis -H "Authorization: Bearer <token>" di setiap request. --oauth2-bearer melakukan hal yang sama dengan satu flag yang deskriptif:

oauth-bearer.sh
curl --oauth2-bearer "$TOKEN" https://api.example.com/me

Perhatikan bahwa token diambil dari environment variable $TOKEN, bukan ditulis hard-coded di command — kebiasaan ini akan kita perkuat di episode 21. --oauth2-bearer identik dengan -H "Authorization: Bearer $TOKEN", tapi lebih mudah dibaca oleh anggota tim yang memelihara skrip kalian nanti.

WebSocket: --ws

WebSocket memungkinkan komunikasi dua arah yang persisten — bukan request-response sekali jalan seperti HTTP biasa. curl 8.x mendukungnya lewat flag --ws: curl melakukan handshake WebSocket, lalu menukar frame pesan secara interaktif.

websocket.sh
curl --ws wss://stream.example.com/live

Setelah koneksi terbentuk, apa pun yang kalian ketik dikirim sebagai pesan, dan respons datang secara real-time sampai koneksi ditutup. Ini sangat berguna untuk menguji streaming feed atau debugging protokol chat. Perlu diingat: dukungan WebSocket di curl masih ditandai eksperimental — pastikan build kalian menyertakan fitur websockets (lihat curl --version), dan uji di lingkungan non-produksi dulu.

HTTP/3: --http3

HTTP/3 adalah evolusi HTTP yang berjalan di atas QUIC — protokol yang dibangun di atas UDP, bukan TCP. Keunggulan utamanya adalah menghilangkan head-of-line blocking: di HTTP/2, satu paket hilang bisa menghambat seluruh aliran; di HTTP/3, setiap aliran mandiri sehingga satu gangguan tidak menahan yang lain.

http3.sh
curl --http3 https://example.com
http3-paksa.sh
curl --http3-only https://example.com

--http3 mencoba HTTP/3 dan turun ke HTTP/2 atau HTTP/1.1 jika tidak didukung; --http3-only memaksa dan gagal jika server tidak mendukungnya. Seperti WebSocket, HTTP/3 butuh build curl yang menyertainya — jika Features di curl --version tidak memuat HTTP3, fitur ini tidak akan berjalan. Untuk server di belakang CDN modern, coba bandingkan timing-nya dengan -w dari episode 18; selisihnya bisa mengejutkan.

Transfer Paralel: -Z, --parallel

Loop for di skrip mengirim request satu per satu, berurutan. --parallel (alias -Z) membuat curl mengirim banyak URL secara bersamaan dalam satu proses, dengan koneksi yang dibatasi oleh --parallel-max (default 50).

parallel.sh
curl -Z -o /dev/null \
  https://api.example.com/users \
  https://api.example.com/posts \
  https://api.example.com/comments

Bayangkan tiga kasir yang melayani tiga antrean sekaligus, bukan satu kasir yang melayani satu per satu. Untuk skrip yang menguji banyak endpoint atau mengambil banyak file, paralelisme ini memangkas waktu eksekusi secara drastis tanpa menulis kompleksitas tambahan.

Retry Menyeluruh: --retry-all-errors

Defaultnya, curl hanya me-retry error yang dianggap sementara (seperti timeout atau reset koneksi). --retry-all-errors memperluasnya ke hampir semua kegagalan transfer:

retry-all-errors.sh
curl --retry 5 --retry-delay 2 --retry-all-errors \
  https://cdn.example.com/big-file.zip -o big-file.zip

Kombinasi ini mengucapkan: coba sampai 5 kali, jeda 2 detik antar percobaan, dan jangan menyerah pada error transfer apa pun. Ini bukan izin untuk menjadi ceroboh — tetap pasang batas (--retry) supaya skrip tidak menggantung selamanya. Retry adalah pengakuan bahwa jaringan itu rapuh; --retry-all-errors adalah cara menyikapinya dengan sabar tapi disiplin.

Download yang Bersih: --output-dir dan --remove-on-error

Dua flag kecil yang mencegah kekacauan besar:

output-dir.sh
curl --output-dir ./downloads --remove-on-error -O \
  https://cdn.example.com/reports/latest.zip

--output-dir menempatkan semua file hasil download ke direktori tertentu, sehingga folder kerja kalian tidak dipenuhi file acak. --remove-on-error menghapus file yang gagal terunduh penuh — mencegah file parsial yang diam-diam dianggap lengkap oleh script kalian. Sebuah file setengah terunduh adalah bom waktu: ukurannya benar, tapi isinya rusak. Flag ini membunuh bom itu di awal.

--libcurl: Membuka Pintu ke C

Salah satu fitur yang paling merendah diri tapi paling berguna adalah --libcurl. Dengan satu flag, curl menuliskan seluruh request yang kalian jalankan sebagai kode sumber C yang setara, memakai libcurl:

libcurl-generate.sh
curl --libcurl request.c https://api.example.com/users

File request.c yang dihasilkan adalah titik awal yang sempurna untuk mempelajari API libcurl — dan itulah tepatnya yang akan kita bedah di episode 20. Tidak perlu menulis C dari nol: cukup jalankan curl yang sudah kalian pahami, lalu biarkan ia menuliskan versi library-nya.

Tip

Untuk eksplorasi cepat semua opsi modern, jalankan curl --help all lalu grep kata kuncinya, misalnya curl --help all | grep -A1 ws untuk mempelajari opsi WebSocket. Dokumentasi lengkap juga tersedia online di situs resmi curl — selalu rujuk ke sana sebelum memakai fitur eksperimental.

Penutup

Episode 19 memperkenalkan fitur modern curl 8.x yang siap dipakai sehari-hari: --json untuk menyederhanakan request JSON, --oauth2-bearer untuk autentikasi token, WebSocket dengan --ws, HTTP/3 dengan --http3, transfer paralel dengan -Z, retry menyeluruh dengan --retry-all-errors, manajemen download yang bersih dengan --output-dir dan --remove-on-error, serta jembatan ke C melalui --libcurl.

Pola yang konsisten di balik semua fitur ini: curl terus berevolusi, dan kalian harus terus mengikuti. Rilis bulanan berarti fitur baru tiba cepat — dan begitu juga perbaikan keamanan.

Di episode 20 berikutnya kita akan membuka kap mesin: libcurl dan integrasi dengan bahasa pemrograman — bagaimana library di balik curl bekerja lewat curl_easy dan curl_multi, ekosistem binding lintas bahasa, serta cara mulai meng-embed curl ke dalam aplikasi kalian sendiri. Sampai jumpa!

Belajar Curl - Fitur Stabil Terbaru (curl 8.x) | Belajar Curl