Web Geliştirmede `URLSearchParams` API ile Sorgu Parametrelerini Yönetmek 
Selam dostlar!
Uzun süredir forumda backend ve veritabanı işlerinden bahsediyorduk, biraz da frontend'in derinliklerine inelim istedim. Bugün, belki adını çok duymadığınız ama bir kere kullanınca "Neden daha önce öğrenmedim?" diyeceğiniz, inanılmaz kullanışlı bir JavaScript API'sinden bahsedeceğim: URLSearchParams.
Özellikle SPA (Single Page Application) geliştirirken, filtreleme yaparken veya kullanıcının sayfa durumunu tarayıcı adres çubuğunda saklamak istediğinizde bu API tam bir cankurtaran. Gelin, birlikte bu sihirli aracı keşfedelim.
Nedir Bu URLSearchParams?
Basitçe söylemek gerekirse, bir URL'nin ? işaretinden sonra gelen kısmını (query string / sorgu parametreleri) yönetmek için tasarlanmış modern bir JavaScript arayüzüdür. Eskiden bu parametreleri elle parçalayıp, `split()` ve `decodeURIComponent()` ile uğraşırdık. Artık bunlara gerek yok!
Temel Kullanım: Yeni Bir Nesne Oluşturmak
`URLSearchParams` nesnesini birkaç farklı şekilde oluşturabilirsiniz:
Sihirli Metotlar: Ne Yapabiliriz?
İşte asıl eğlence burada başlıyor. API'nin sunduğu metotlar sayesinde sorgu parametreleriyle oynamak çocuk oyuncağı.
Gerçek Dünya Senaryosu: Dinamik Filtreleme UI'ı
Bir ürün listesi sayfası yaptığınızı düşünün. Kullanıcı filtreleri değiştirdikçe, URL'yi güncelleyip sayfayı yenilemeden veya karmaşık state yönetimine girmeden, tarayıcı geçmişini yönetebilirsiniz.
Bu yaklaşımın güzelliği şu: Kullanıcı belirli bir filtreleme ile sayfayı yer imlerine ekleyebilir veya linki paylaşabilir. Ayrıca, tarayıcının geri/ileri tuşları da mükemmel çalışır.
Dikkat Edilmesi Gereken Noktalar ve İpuçları
Umarım bu küçük rehber, projelerinizdeki URL karmaşasını çözmenize yardımcı olur. `URLSearchParams` API'si, modern tarayıcıların bize sunduğu ve çok az kişinin tam olarak kullandığı hazinelerden biri. Bir sonraki projenizde mutlaka deneyin!
Sorularınız olursa yorumlarda bekliyorum. İyi kodlamalar!
Selam dostlar!
Özellikle SPA (Single Page Application) geliştirirken, filtreleme yaparken veya kullanıcının sayfa durumunu tarayıcı adres çubuğunda saklamak istediğinizde bu API tam bir cankurtaran. Gelin, birlikte bu sihirli aracı keşfedelim.
Nedir Bu URLSearchParams?
Basitçe söylemek gerekirse, bir URL'nin ? işaretinden sonra gelen kısmını (query string / sorgu parametreleri) yönetmek için tasarlanmış modern bir JavaScript arayüzüdür. Eskiden bu parametreleri elle parçalayıp, `split()` ve `decodeURIComponent()` ile uğraşırdık. Artık bunlara gerek yok!
Temel Kullanım: Yeni Bir Nesne Oluşturmak
`URLSearchParams` nesnesini birkaç farklı şekilde oluşturabilirsiniz:
- Mevcut bir sorgu string'inden:
Kod:const paramsString = 'kategori=teknoloji&siralama=yeni&sayfa=2'; const searchParams = new URLSearchParams(paramsString); - Doğrudan bir URL'den:
Kod:const url = new URL('https://orneksite.com/urunler?kategori=teknoloji&siralama=yeni'); const searchParams = new URLSearchParams(url.search); - Boş bir nesne olarak (sonradan parametre eklemek için):
Kod:const searchParams = new URLSearchParams();
Sihirli Metotlar: Ne Yapabiliriz?
İşte asıl eğlence burada başlıyor. API'nin sunduğu metotlar sayesinde sorgu parametreleriyle oynamak çocuk oyuncağı.
- get() & getAll(): Bir parametrenin değerini almak için.
Kod:searchParams.get('kategori'); // "teknoloji" döner searchParams.get('fiyat'); // null döner (yoksa) // Aynı isimde birden fazla parametre varsa (örn: ?renk=kırmızı&renk=mavi) searchParams.getAll('renk'); // ["kırmızı", "mavi"] döner - has(): Belirli bir parametrenin olup olmadığını kontrol eder.
Kod:searchParams.has('siralama'); // true searchParams.has('indirim'); // false - set(), append() & delete(): Parametre eklemek, değiştirmek veya silmek.
Kod:searchParams.set('sayfa', '5'); // 'sayfa' değerini 5 yapar (varsa değiştirir, yoksa ekler) searchParams.append('marka', 'apple'); // Aynı isimle ikinci bir 'marka' parametresi ekler searchParams.delete('siralama'); // 'siralama' parametresini siler - toString(): Nesneyi tekrar bir sorgu string'ine çevirir. Bu, yeni URL oluşturmak için harikadır.
Kod:searchParams.toString(); // "kategori=teknoloji&sayfa=5&marka=apple"
Gerçek Dünya Senaryosu: Dinamik Filtreleme UI'ı
Bir ürün listesi sayfası yaptığınızı düşünün. Kullanıcı filtreleri değiştirdikçe, URL'yi güncelleyip sayfayı yenilemeden veya karmaşık state yönetimine girmeden, tarayıcı geçmişini yönetebilirsiniz.
Kod:
// Mevcut URL'den parametreleri al
let searchParams = new URLSearchParams(window.location.search);
// Kullanıcı bir filtre butonuna tıkladığında
function filtreUygula(kategori, deger) {
// Parametreyi güncelle
searchParams.set(kategori, deger);
// Yeni URL'yi oluştur ve tarayıcı geçmişine ekle (sayfa yenilenmez!)
const yeniUrl = window.location.pathname + '?' + searchParams.toString();
window.history.pushState({}, '', yeniUrl);
// Filtrelenmiş verileri getir (örneğin fetch API ile)
verileriYenile();
}
// Sayfa yüklendiğinde veya kullanıcı geri/ileri tuşuna bastığında
window.addEventListener('popstate', function(event) {
// URL değişti, parametreleri tekrar oku ve UI'ı güncelle
searchParams = new URLSearchParams(window.location.search);
const seciliKategori = searchParams.get('kategori');
// UI'daki aktif filtre butonunu buna göre güncelle...
});
Bu yaklaşımın güzelliği şu: Kullanıcı belirli bir filtreleme ile sayfayı yer imlerine ekleyebilir veya linki paylaşabilir. Ayrıca, tarayıcının geri/ileri tuşları da mükemmel çalışır.
Dikkat Edilmesi Gereken Noktalar ve İpuçları
- Parametre isimleri ve değerleri otomatik olarak encode/decode edilir. Türkçe karakter veya boşluk için endişelenmeyin.
- `URLSearchParams` nesnesini doğrudan `fetch()` isteğinde kullanabilirsiniz:
Kod:const params = new URLSearchParams({ user: 'ahmet', aktivite: 'yazılım' }); fetch(`/api/etkinlik?${params}`); // Çok temiz! - Nesne üzerinde for...of döngüsü ile tüm parametreleri gezebilirsiniz:
Kod:for (let [anahtar, deger] of searchParams) { console.log(`${anahtar}: ${deger}`); } - `sort()` metodu ile parametreleri alfabetik sıraya dizebilirsiniz, bu da önbellekleme için faydalı olabilir.
Umarım bu küçük rehber, projelerinizdeki URL karmaşasını çözmenize yardımcı olur. `URLSearchParams` API'si, modern tarayıcıların bize sunduğu ve çok az kişinin tam olarak kullandığı hazinelerden biri. Bir sonraki projenizde mutlaka deneyin!
Sorularınız olursa yorumlarda bekliyorum. İyi kodlamalar!