Sebagian besar alur kerja pengembang masih berjalan di terminal. Alat yang bertahan lama biasanya memiliki karakteristik yang sama: sumber terbuka, dapat diperiksa kodenya, dapat di-self-host bila relevan, dan tidak mengunci Anda ke lisensi per kursi atau proses “hubungi penjualan”.
Artikel ini membahas tujuh alat CLI sumber terbuka yang praktis untuk pengembangan API dan backend sehari-hari. Fokusnya adalah alat yang dapat langsung dipakai untuk membuat request, memproses JSON, menguji HTTP, mengotomatisasi GitHub, membuka server lokal, dan memversioning workflow Anda.
Setiap entri menyertakan lisensi, repository, contoh perintah, dan kapan sebaiknya digunakan. Ada juga catatan terpisah untuk Apidog sebagai opsi komersial dengan paket gratis—bukan sebagai entri OSS.
Apa yang membuat alat CLI layak disebut sumber terbuka?
Sebelum menambahkan alat ke toolchain, lakukan tiga pemeriksaan berikut:
Periksa lisensi.
Cari lisensi yang disetujui OSI seperti MIT, Apache 2.0, BSD, atau GPL. Lisensi ini menentukan apakah Anda dapat memakai, memodifikasi, mendistribusikan, atau men-self-host alat tersebut sesuai ketentuannya.Periksa kode sumber dan aktivitas proyek.
Repository GitHub atau forge setara memungkinkan Anda membaca kode, membuka issue, memeriksa rilis, dan menilai apakah proyek masih dipelihara.Hindari penguncian yang tidak perlu.
Idealnya, alat tidak mewajibkan akun untuk fungsi inti, tidak memaksa Anda menyewa server proprietary, dan tidak memiliki telemetri yang tidak dapat dimatikan.
Bintang GitHub dan frekuensi commit tetap berguna, tetapi bukan satu-satunya indikator. Selalu baca file LICENSE sebelum menstandarkan alat untuk tim.
curl: klien HTTP universal
curl adalah fondasi untuk request HTTP di terminal. Ia tersedia di hampir semua sistem operasi, mendukung banyak protokol, dan telah dipelihara sejak 1996. curl menggunakan lisensi curl yang permisif, dengan kode sumber di github.com/curl/curl.
Gunakan curl ketika Anda membutuhkan request yang portabel untuk shell script, container, atau pipeline CI.
curl -s -X POST https://api.github.com/repos/curl/curl/issues \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"Test issue","body":"Filed from curl"}'
Praktik yang berguna untuk script:
curl --fail --silent --show-error \
https://api.example.com/health
-
--failmembuat curl gagal untuk respons HTTP error. -
--silentmenghilangkan progress bar. -
--show-errortetap menampilkan error saat request gagal.
Terbaik untuk: portabilitas dan scripting.
Batasan: output mentah dan penanganan JSON kurang nyaman. Biasanya curl dipasangkan dengan jq.
HTTPie: request HTTP yang mudah dibaca
HTTPie adalah klien HTTP untuk debugging interaktif. Sintaks request lebih ringkas, body JSON dapat ditulis langsung, dan respons ditampilkan dengan format yang lebih mudah dibaca. HTTPie menggunakan lisensi BSD-3-Clause dan tersedia di github.com/httpie/cli.
Instal dengan pip:
pip install httpie
Kirim request JSON:
http POST httpbin.org/post name=apidog role=platform
HTTPie akan mengubah name=apidog dan role=platform menjadi field JSON. Untuk mengirim header autentikasi:
http GET https://api.example.com/me \
Authorization:"Bearer $TOKEN"
Terbaik untuk: eksplorasi endpoint dan debugging manual.
Batasan: berbasis Python, sehingga lebih berat dibanding binary tunggal seperti curl dalam image CI minimal.
jq: proses JSON dalam pipeline
API hampir selalu mengembalikan JSON, dan jq adalah alat standar untuk mengambil, menyaring, dan membentuk ulang data tersebut. jq berlisensi MIT dan dikembangkan di github.com/jqlang/jq.
Contoh: ambil tiga field dari respons repository GitHub.
curl -s https://api.github.com/repos/jqlang/jq \
| jq '{name: .name, stars: .stargazers_count, license: .license.spdx_id}'
Untuk mengekstrak satu nilai yang dapat dipakai shell:
RELEASE_TAG=$(gh api repos/cli/cli/releases --jq '.[0].tag_name')
echo "$RELEASE_TAG"
Gunakan -r saat Anda membutuhkan string tanpa tanda kutip:
curl -s https://api.example.com/config \
| jq -r '.database.host'
Terbaik untuk: mengubah respons JSON besar menjadi input kecil untuk langkah berikutnya di script.
Batasan: sintaksnya ringkas dan transformasi kompleks dapat sulit dibaca. Mulailah dari filter sederhana seperti .field, .[0], dan {key: .value}.
gh: CLI untuk GitHub
gh membawa workflow GitHub ke terminal: pull request, issue, release, Actions, dan GitHub API. Alat ini ditulis dalam Go, berlisensi MIT, dan tersedia di github.com/cli/cli.
Autentikasi terlebih dahulu:
gh auth login
Ambil tag rilis terbaru:
gh api repos/cli/cli/releases --jq '.[0].tag_name'
Buat issue dari terminal:
gh issue create \
--repo owner/repository \
--title "Bug pada endpoint login" \
--body "Langkah reproduksi: ..."
Keuntungan utama gh api adalah autentikasi GitHub sudah ditangani CLI, sehingga Anda tidak perlu menyisipkan token manual ke setiap perintah curl.
Terbaik untuk: otomatisasi GitHub di CI, release workflow, dan administrasi repository.
Batasan: dirancang khusus untuk GitHub. Untuk GitLab, Gitea, atau forge lain, gunakan CLI masing-masing atau panggil API dengan curl.
Hurl: tes HTTP teks biasa yang dapat di-commit
Hurl menjalankan request HTTP dari file teks dan memvalidasi status, header, serta body respons. File .hurl dapat disimpan bersama kode aplikasi, direview dalam pull request, dan dijalankan di CI. Hurl ditulis dalam Rust, berlisensi Apache 2.0, dan tersedia di github.com/Orange-OpenSource/hurl.
Buat file repo.hurl:
GET https://api.github.com/repos/Orange-OpenSource/hurl
HTTP 200
[Asserts]
jsonpath "$.name" == "hurl"
jsonpath "$.stargazers_count" > 1000
Jalankan pengujian:
hurl --test repo.hurl
Hurl mengembalikan exit code 0 ketika semua assertion berhasil dan exit code selain nol ketika tes gagal. Itu membuatnya langsung cocok untuk pipeline CI:
hurl --test tests/api/*.hurl
Terbaik untuk: tes integrasi HTTP yang sederhana, mudah dibaca, dan dapat dikontrol versinya.
Batasan: Hurl berfokus pada request/response HTTP; ini bukan pengganti penuh untuk load testing atau contract testing. Untuk workflow pengembangan API yang mengutamakan spesifikasi, simpan file Hurl berdampingan dengan definisi OpenAPI.
cloudflared: membuka server lokal ke internet
Saat menguji webhook, callback OAuth, demo, atau aplikasi seluler, Anda sering membutuhkan URL publik untuk server di laptop. cloudflared dapat membuat quick tunnel ke localhost tanpa akun untuk kebutuhan sementara.
cloudflared ditulis dalam Go, berlisensi Apache 2.0, dan tersedia di github.com/cloudflare/cloudflared.
Buka port aplikasi lokal:
cloudflared tunnel --url http://localhost:3000
Perintah tersebut mencetak URL HTTPS *.trycloudflare.com yang meneruskan request ke localhost:3000. Gunakan URL itu sebagai callback URL di layanan pihak ketiga selama proses pengembangan.
Jika workflow Anda berbasis npm, localtunnel yang berlisensi MIT menyediakan alternatif:
npx localtunnel --port 3000
Terbaik untuk: tunnel sementara, demo, webhook, dan pengujian perangkat nyata.
Batasan: quick tunnel memiliki URL acak dan sementara. Tunnel bernama yang stabil memerlukan akun dan konfigurasi Cloudflare, meskipun kliennya tetap sumber terbuka.
git: fondasi version control untuk workflow API
Git bukan hanya alat GUI atau layanan hosting. Git CLI adalah tempat Anda mengelola perubahan spesifikasi API, file Hurl, script curl, konfigurasi CI, dan hook otomatisasi. Git berlisensi GPLv2 dan dikembangkan secara terbuka di github.com/git/git.
Contoh praktis: jalankan Hurl sebelum commit dengan hook Git.
echo 'hurl --test *.hurl' > .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
Untuk proyek yang lebih besar, simpan hook di repository dan instal melalui script agar seluruh tim memakai aturan yang sama.
mkdir -p scripts
cat > scripts/install-hooks.sh <<'EOF'
#!/usr/bin/env bash
cp scripts/pre-commit .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
EOF
Terbaik untuk: menjadi lapisan version control bagi spesifikasi, tes, dan script.
Batasan: Git adalah version control, bukan platform hosting. GitHub, GitLab, dan Gitea adalah pilihan terpisah dengan model lisensi dan hosting masing-masing.
Catatan jujur: di mana Apidog cocok
Apidog bukan sumber terbuka, sehingga tidak masuk ke daftar OSS ini. Namun, Apidog relevan jika Anda ingin mengurangi pekerjaan menyatukan banyak alat terpisah.
Apidog menyatukan desain, pengujian, mocking, dan dokumentasi API dalam satu workspace. apidog-cli membawa sebagian workflow tersebut ke terminal.
npm install -g apidog-cli
CLI ini dapat menjalankan skenario pengujian, mengelola endpoint dan skema, menjalankan ekspektasi mock, serta mengimpor atau mengekspor OpenAPI. Output JSON terstruktur juga dapat dipakai oleh script dan agen AI. Seperti Hurl, apidog run mengembalikan exit code 0 ketika semua tes lulus dan bukan nol ketika ada kegagalan.
Pilih toolchain berdasarkan kebutuhan:
- Pilih alat sumber terbuka terpisah jika Anda mengutamakan akses kode sumber, fleksibilitas, dan kontrol penuh atas workflow.
- Pilih platform terintegrasi jika Anda ingin mengurangi konfigurasi dan pemeliharaan beberapa alat.
Jika memilih jalur CLI Apidog, gunakan panduan instalasi untuk autentikasi dan perintah pertama.
Cara memilih alat
Untuk workflow praktis, jangan anggap alat-alat ini saling menggantikan. Sebagian besar developer menggunakannya bersama:
- Gunakan
curlatau HTTPie untuk memanggil endpoint. - Pipe respons ke
jquntuk mengambil data yang diperlukan. - Simpan skenario penting sebagai file Hurl.
- Jalankan Hurl di CI.
- Versioning semua file tersebut dengan Git.
- Gunakan
cloudflaredketika endpoint lokal harus menerima callback publik. - Gunakan
ghuntuk otomatisasi yang berhubungan dengan GitHub.
| Alat | Terbaik untuk | Instalasi | Sumber terbuka? | Catatan |
|---|---|---|---|---|
| curl | Request portabel dan scripting | Biasanya sudah terinstal | Ya (curl/gaya MIT) | Tersedia di hampir setiap sistem |
| HTTPie | Debugging manual yang mudah dibaca | pip install httpie |
Ya (BSD-3-Clause) | Output berwarna, JSON praktis |
| jq | Memproses respons JSON | Package manager / binary | Ya (MIT) | Perekat untuk pipeline shell |
| gh | Otomatisasi GitHub | Package manager / binary | Ya (MIT) | Khusus GitHub |
| Hurl | Tes HTTP yang dapat di-commit | Binary tunggal | Ya (Apache 2.0) | Gagal dengan exit code bukan nol |
| cloudflared | Tunnel publik sementara | Binary tunggal | Ya (Apache 2.0) | Quick tunnel tidak memerlukan akun |
| git | Version control | Biasanya sudah terinstal | Ya (GPLv2) | Fondasi untuk semua artefak workflow |
| apidog-cli | Workflow API terintegrasi | npm i -g apidog-cli |
Tidak (paket gratis tersedia) | Desain, tes, mock, dan dokumentasi |
Aturan praktisnya sederhana: gunakan alat OSS satu-tujuan jika Anda ingin mengelola setiap komponen sendiri. Gunakan platform terintegrasi jika biaya merawat banyak komponen mulai lebih besar daripada manfaat fleksibilitasnya. Untuk perbandingan workflow terintegrasi, lihat Apidog sebagai platform pengembangan API yang komprehensif.
Kesimpulan
Toolchain terminal untuk pengembangan API tidak harus rumit:
- Mulai dengan
curldanjquntuk request serta pemrosesan respons. - Tambahkan HTTPie untuk debugging manual yang lebih nyaman.
- Tambahkan Hurl saat endpoint perlu diuji secara repeatable di CI.
- Gunakan
ghuntuk otomatisasi GitHub. - Gunakan
cloudflaredsaat server lokal membutuhkan URL publik. - Simpan semuanya di Git.
curl, HTTPie, jq, gh, Hurl, cloudflared, dan git memberi Anda dasar sumber terbuka yang dapat diperiksa, difork, dan diintegrasikan sesuai kebutuhan.
Jika Anda membangun workflow berbasis agen, output JSON dari alat CLI juga memudahkan otomasi. Artikel tentang asisten coding AI untuk pengembangan API membahas pola tersebut lebih jauh. Jika mengelola banyak alat terpisah mulai menjadi beban, unduh Apidog dan coba CLI Apidog untuk mengevaluasi workflow terintegrasi.
Top comments (0)