Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

HTTP dan API Web

Pelajaran 3 dari 16

Permintaan, respons, dan URL

Query string dan percent-encoding

Setelah pelajaran ini kamu bisa menyusun dan membaca query string dengan encodeURIComponent dan decodeURIComponent, serta membedakan hasilnya dengan URLSearchParams.

±13 menitDiperiksa 28 Sep 2026

Materi

Query berisi pasangan nama=nilai yang dipisah tanda &. Spasi, &, =, #, dan huruf di luar ASCII punya arti khusus atau tidak boleh muncul apa adanya, sehingga harus dikodekan persen: setiap bita ditulis sebagai % diikuti dua digit heksadesimal (RFC 3986 §2.1). Spasi menjadi %20, & menjadi %26, dan é yang terdiri atas dua bita UTF-8 menjadi %C3%A9. Karakter yang tidak pernah perlu dikodekan hanya huruf, angka, dan - . _ ~.

encodeURIComponent mengodekan satu nilai supaya aman ditaruh di query atau di satu segmen path, dan decodeURIComponent membaliknya. Kodekan nama dan nilai satu per satu, lalu gabungkan dengan = dan &. Jangan mengodekan URL utuh dengan fungsi itu, karena : dan / ikut berubah menjadi %3A dan %2F.

encodeURIComponent("roti & selai");   // "roti%20%26%20selai"
decodeURIComponent("caf%C3%A9");      // "café"
new URLSearchParams({ q: "roti & selai" }).toString(); // "q=roti+%26+selai"
new URLSearchParams("?tag=a&tag=b").getAll("tag");    // ["a", "b"]

URLSearchParams mengerjakan hal yang sama untuk seluruh query, dengan satu perbedaan yang dicatat MDN: spasi ditulis sebagai +, bukan %20, karena kelas itu memakai format application/x-www-form-urlencoded. Satu nama boleh muncul berkali-kali, misalnya tag=a&tag=b; getAll mengambil semuanya, sedangkan get hanya yang pertama. Semua nilai query adalah teks, jadi hal=3 terbaca sebagai "3", bukan angka 3.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Apa hasil new URLSearchParams({ cari: "es teh" }).toString()?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke