Semua artikel

Query String vs JSON: mengapa parameter GET begitu terbatas

Query string pada URL adalah format transfer data paling sederhana yang ada: daftar pasangan key=value yang dipisah tanda &. Tapi kesederhanaan ini jadi masalah begitu kamu perlu mengirim sesuatu yang lebih kompleks dari daftar string datar.

Kenapa query string terbatas

Format query string awalnya dirancang untuk form HTML sederhana dan tidak punya konsep bawaan untuk tipe data, nesting, atau array. Semuanya di sana adalah teks, jadi angka 42 dan string "42" tidak bisa dibedakan sampai ada kode yang secara eksplisit mem-parsing-nya.

Array di query string: konvensi PHP yang dominan di ekosistem lokal

PHP — lewat WordPress maupun framework seperti Laravel (yang juga dipakai situs ini) — adalah salah satu ekosistem backend paling banyak dipakai developer Indonesia, sebagian besar karena banyaknya hosting berbasis PHP yang murah dan mudah diakses. PHP secara native memahami tags[]=a&tags[]=b sebagai array, dan filter[status]=aktif sebagai struktur bersarang, tanpa perlu library tambahan. Ekosistem lain punya konvensi berbeda — ASP.NET misalnya biasanya mengharapkan key yang sama diulang tanpa tanda kurung siku (tags=a&tags=b). Kalau client dan server tidak sepakat soal konvensi ini, data array bisa hilang atau rusak begitu saja tanpa peringatan.

Kenapa JSON menyelesaikan masalah ini

JSON punya tipe data bawaan (angka, boolean, null) dan dukungan native untuk objek serta array bersarang tanpa perlu konvensi encoding apa pun. Karena itu, data kompleks di body request POST biasanya dikirim sebagai JSON, sementara query string disisakan untuk parameter sederhana dan datar seperti filter atau nomor halaman.

Kegunaannya

  • Mengecek persis format array parameter yang diharapkan backend dalam query string.
  • Mengonversi parameter URL ke JSON supaya lebih mudah di-debug.
  • Memahami kenapa struktur data kompleks sebaiknya tidak dikirim lewat parameter GET.

Batasan panjang URL

Sebagian besar browser dan server membatasi panjang URL sekitar 2000 karakter (nilai pastinya tergantung browser dan web server), jadi query string secara fisik tidak cocok untuk membawa data dalam jumlah besar. Ini alasan lain kenapa request POST dengan body JSON jadi pilihan standar untuk form kompleks atau data array, sementara GET dengan query string tetap dipakai untuk parameter yang pendek dan sederhana.

Coba alat