Query string adalah bagian dari URL yang digunakan untuk mengirimkan data dari browser klien ke server melalui protokol HTTP. Bagian ini terletak di akhir URL, diawali dengan tanda tanya (?) dan memuat pasangan kunci-nilai (key-value pairs) yang dipisahkan oleh tanda ampersand (&).
Mekanisme ini memungkinkan aplikasi web menyampaikan informasi tambahan tanpa mengubah halaman utama yang diakses. Contoh paling sering ditemukan adalah saat melakukan pencarian di mesin pencari atau memfilter produk di e-commerce.
Struktur dan Komponen Query String
Sebuah query string memiliki aturan penulisan standar agar dapat diurai (parsed) dengan benar oleh server web maupun bahasa pemrograman di sisi backend. Perhatikan anatomi dasar URL berikut:
https://contoh.com/halaman?kunci1=nilai1&kunci2=nilai2
| Komponen | Keterangan | Contoh |
|---|---|---|
? (Tanda Tanya) |
Pemisah antara alamat URL utama dan awal query string. | https://toko.com/cari? |
Key (Kunci) |
Nama parameter atau variabel yang dikirim ke server. | q, page, sort |
= (Tanda Sama Dengan) |
Penghubung antara kunci dan nilai dari parameter tersebut. | q=laptop |
& (Ampersand) |
Pemisah jika terdapat lebih dari satu parameter dalam satu URL. | q=laptop&min_price=1000000 |
Alur Kerja Pengiriman Data
Proses pertukaran data menggunakan query string berjalan melalui beberapa tahapan sistem:
- Pengguna Memasukkan Input: Klien (browser) mengetik kata kunci pada kolom pencarian atau menekan tombol filter di antarmuka web.
- Konversi ke URL: Browser secara otomatis merangkai input tersebut menjadi format query string dan menambahkannya ke ujung URL dasar.
- Permintaan HTTP (HTTP Request): Browser mengirimkan permintaan GET ke server tujuan dengan membawa URL lengkap beserta parameter di dalamnya.
- Pemrosesan Server: Server menerima permintaan, membaca query string menggunakan bahasa pemrograman (seperti PHP, Node.js, atau Python), lalu mengekstrak nilai variabel untuk query database atau logika aplikasi.
- Respon Dikembalikan: Server mengirimkan data atau halaman HTML hasil pemfilteran kembali ke browser untuk ditampilkan kepada pengguna.
Contoh Implementasi pada Kode Pemrograman
Berikut adalah contoh cara menangkap nilai dari query string menggunakan bahasa pemrograman JavaScript (Node.js dengan modul bawaan url) dan PHP.
Contoh di Node.js
const url = require('url');
const adr = 'http://localhost:8080/search?keyword=sepatu&category=sport';
const q = url.parse(adr, true);
console.log(q.host); // 'localhost:8080'
console.log(q.pathname); // '/search'
console.log(q.query.keyword); // 'sepatu'
console.log(q.query.category); // 'sport'
Contoh di PHP
// URL: https://example.com/index.php?user=andi&status=active
$nama_user = $_GET['user'];
$status_user = $_GET['status'];
echo "Halo " . htmlspecialchars($nama_user) . ", status Anda: " . htmlspecialchars($status_user);
// Output: Halo andi, status Anda: active
Kelebihan dan Kekurangan Query String
Meskipun sangat diandalkan dalam arsitektur web modern, penggunaan query string memiliki batasan yang perlu diperhatikan oleh pengembang aplikasi.
- Kelebihan:
- Mudah dibaca, dibagikan (shareable), dan di-bookmark oleh pengguna karena tersimpan langsung di dalam URL.
- Sangat cocok untuk metode HTTP GET yang bersifat tidak mengubah data permanen di server (seperti pencarian dan paginasi).
- Kekurangan:
- Tidak aman untuk data sensitif seperti kata sandi atau token rahasia, karena terlihat jelas di address bar browser dan riwayat server log.
- Memiliki batasan panjang karakter (tergantung pada jenis browser dan server), sehingga tidak ideal untuk mengirimkan data berukuran besar seperti teks panjang atau file biner.