
URL'lerin sonunda bazen garip şeyler görürsünüz: soru işaretleri, eşittir işaretleri, & sembolleri... Bunlar query string (sorgu dizisi). API'lere ek bilgi göndermenin en yaygın yollarından biri.
Bu makalede query string'in ne olduğunu, nasıl yazıldığını ve ne zaman kullanıldığını öğreneceksiniz.
Query String Nedir?
Query string, URL'in sonuna eklenen anahtar-değer çiftleridir. Sunucuya ek bilgi göndermek için kullanılır.
Yapısı
https://api.example.com/arama?kelime=telefon&marka=samsung&limit=10
└─────────────── query string ───────────────┘Parçaları:
?→ Query string'in başlangıcıkelime=telefon→ İlk anahtar-değer çifti&→ Çiftleri ayıran sembolmarka=samsung→ İkinci çiftlimit=10→ Üçüncü çift
Temel Kurallar
Kural 1: Soru İşareti ile Başlar
https://site.com/sayfa?parametre=deger
↑
BaşlangıçKural 2: Anahtar=Değer Formatı
anahtar=değer
isim=ali
sayfa=3
siralama=fiyatKural 3: & ile Ayrılır
?birinci=1&ikinci=2&ucuncu=3Kural 4: Boşluk ve Özel Karakterler Kodlanır
Boşluk ve özel karakterler URL'de doğrudan kullanılamaz. URL encoding yapılır:
| Karakter | Kodlanmış Hali |
|---|---|
| Boşluk | %20 veya + |
| & | %26 |
| = | %3D |
| ? | %3F |
| Türkçe ş | %C5%9F |
Örnek:
Arama: "kırmızı ayakkabı"
URL: ?arama=k%C4%B1rm%C4%B1z%C4%B1%20ayakkab%C4%B1Tarayıcı ve araçlar bu kodlamayı otomatik yapar, manuel yapmanız gerekmez.
Gerçek Hayat Örnekleri
Google Araması
Google'da "javascript öğren" araması yaptığınızda URL şöyle olur:
https://www.google.com/search?q=javascript+öğrenq→ Query (arama terimi) parametresijavascript+öğren→ Aradığınız kelimeler
YouTube Videosu
Bir YouTube videosunun URL'i:
https://www.youtube.com/watch?v=dQw4w9WgXcQv→ Video ID parametresidQw4w9WgXcQ→ Videonun benzersiz ID'si
E-ticaret Filtreleme
Bir e-ticaret sitesinde filtreleme yaptığınızda:
https://magazam.com/urunler?kategori=elektronik&marka=apple&min_fiyat=5000&max_fiyat=20000&siralama=fiyat_artan| Parametre | Değer | Anlam |
|---|---|---|
| kategori | elektronik | Kategori filtresi |
| marka | apple | Marka filtresi |
| min_fiyat | 5000 | Minimum fiyat |
| max_fiyat | 20000 | Maksimum fiyat |
| siralama | fiyat_artan | Sıralama yöntemi |
API'lerde Query String Kullanımı
Örnek 1: Arama
Çoğu API, arama için q veya query parametresi kullanır:
GET https://api.tvmaze.com/search/shows?q=breaking+badYanıt: "Breaking Bad" ile eşleşen diziler
Örnek 2: Filtreleme
Belirli kriterlere göre veri filtreleme:
GET https://api.example.com/urunler?kategori=kitap&yazar=orhan+pamukYanıt: Orhan Pamuk'un kitapları
Örnek 3: Sayfalama (Pagination)
Büyük veri setlerini parçalara bölme:
GET https://api.example.com/haberler?sayfa=2&adet=20| Parametre | Anlam |
|---|---|
| sayfa=2 | 2. sayfayı getir |
| adet=20 | Sayfa başına 20 sonuç |
Örnek 4: Sıralama
Sonuçları belirli bir düzende getirme:
GET https://api.example.com/urunler?siralama=fiyat&yon=azalanYanıt: Fiyata göre azalan sırada ürünler
Örnek 5: Tarih Aralığı
Belirli tarihler arasındaki verileri getirme:
GET https://api.example.com/siparisler?baslangic=2024-01-01&bitis=2024-01-31Yanıt: Ocak 2024 siparişleri
JSONPlaceholder ile Pratik
JSONPlaceholder, query string desteği sunan ücretsiz bir test API'sidir.
Tüm Postları Getir
GET https://jsonplaceholder.typicode.com/postsYanıt: 100 post
Belirli Kullanıcının Postları
GET https://jsonplaceholder.typicode.com/posts?userId=1Yanıt: Sadece 1 numaralı kullanıcının postları (10 post)
Birden Fazla Filtre
GET https://jsonplaceholder.typicode.com/comments?postId=1&email=Eliseo@gardner.bizYanıt: 1 numaralı posta ait ve belirtilen emaile sahip yorumlar
TV Maze API Örneği
TV Maze API, query string ile güçlü arama özelliği sunar.
Dizi Arama
GET https://api.tvmaze.com/search/shows?q=game+of+thronesProgram Takvimi
Belirli bir ülke ve tarihteki TV programlarını getirme:
GET https://api.tvmaze.com/schedule?country=TR&date=2024-06-15| Parametre | Değer | Anlam |
|---|---|---|
| country | TR | Türkiye |
| date | 2024-06-15 | 15 Haziran 2024 |
Query String vs URL Yolu
İkisi de veri taşır ama amaçları farklıdır:
URL Yolu (Path)
Belirli bir kaynağı tanımlar:
/kullanicilar/42 → 42 numaralı kullanıcı
/urunler/laptop-x500 → Laptop X500 ürünü
/kategoriler/elektronik → Elektronik kategorisiQuery String
Kaynağı filtreler, sıralar veya değiştirir:
/kullanicilar?aktif=true → Aktif kullanıcılar
/urunler?siralama=fiyat → Fiyata göre sıralı ürünler
/kategoriler?limit=5 → İlk 5 kategoriNe Zaman Hangisi?
| Durum | Kullanılacak | Örnek |
|---|---|---|
| Belirli kaynak | URL yolu | /urunler/42 |
| Filtreleme | Query string | /urunler?kategori=elektronik |
| Sıralama | Query string | /urunler?sort=fiyat |
| Sayfalama | Query string | /urunler?page=2 |
| Arama | Query string | /arama?q=laptop |
Hoppscotch'ta Query String
Yöntem 1: URL'e Doğrudan Yazma
https://api.tvmaze.com/search/shows?q=friendsTüm string'i URL kutusuna yapıştırın.
Yöntem 2: Parameters Sekmesi
Daha düzenli ve hata yapmaya daha az açık:
- Parameters sekmesine tıklayın
- Anahtar-değer çiftlerini ekleyin:
| Key | Value |
|---|---|
| q | friends |
| page | 1 |
Avantajları:
- Otomatik URL encoding
- Parametreleri açıp kapatabilme (checkbox)
- Daha okunaklı
- Hata yapma olasılığı düşük
Önemli Noktalar
1. Her API Farklı Parametreler Bekler
Bir API q beklerken, diğeri query veya search bekleyebilir:
Google: ?q=arama
Twitter: ?query=arama
GitHub: ?q=arama
Spotify: ?q=aramaMutlaka dokümantasyonu okuyun!
2. Bilinmeyen Parametreler Genellikle Göz Ardı Edilir
GET https://jsonplaceholder.typicode.com/posts?rastgele=deger&sacma=123API, rastgele ve sacma parametrelerini tanımıyorsa basitçe görmezden gelir. Hata vermez ama istediğiniz filtreleme de yapılmaz.
3. Büyük/Küçük Harf Duyarlılığı
Çoğu API büyük/küçük harf duyarlıdır:
?Category=elektronik → Çalışmayabilir
?category=elektronik → Doğru4. Boş Değerler
Boş değer göndermek genellikle o parametreyi yok saymak demektir:
?isim=&sehir=ankara → isim filtresi uygulanmazSık Kullanılan Parametre İsimleri
| Amaç | Yaygın İsimler |
|---|---|
| Arama | q, query, search, keyword |
| Sayfa | page, p, sayfa |
| Limit | limit, per_page, count, size |
| Sıralama | sort, order, orderby, sortby |
| Yön | dir, direction, asc, desc |
| Filtre | filter, type, category, status |
| Tarih | date, from, to, start, end |
| Format | format, output (json, xml) |
Özet
| Kavram | Açıklama |
|---|---|
| Query String | URL sonuna eklenen anahtar-değer çiftleri |
| Başlangıç | ? işareti |
| Ayırıcı | & işareti |
| Format | anahtar=değer |
| Amaç | Filtreleme, arama, sayfalama, sıralama |
| URL Encoding | Özel karakterlerin kodlanması |
Sırada Ne Var?
Query string ile URL'e nasıl parametre ekleneceğini öğrendik.
Bir sonraki makalede HTTP Headers (başlıklar) konusunu inceleyeceğiz.


