Set Path + Query
Set Path + Query Aksiyonu Nedir?
Set Path + Query aksiyonu, gelen HTTP isteğinin URL path ve query string kısımlarını birlikte değiştirir. Bu aksiyon, isteği Kurum Servisine iletmeden önce hem path'i hem de parametreleri yeniden yazar.
Bu aksiyon yalnızca istek (request) aşamasında çalışır ve URL'nin path + query string kısımlarını değiştirir.
URL Yapısı ve Path + Query
URL'nin bileşenlerini anlamak, doğru aksiyon seçimi için önemlidir:
| Bileşen | Etkilenir mi? | Açıklama |
|---|---|---|
| Scheme | Hayır | Protokol korunur |
| Domain Name | Hayır | Sunucu adresi korunur |
| Port | Hayır | Port numarası korunur |
| Path | Evet | Kaynak yolu değişir |
| Parameters | Evet | Query string değişir |
| Anchor | Hayır | Sayfa içi referans (sunucuya gönderilmez) |
Set Path + Query vs Set Path
- Set Path + Query: Hem path'i hem query string'i değiştirir.
- Set Path: Sadece path'i değiştirir, query string korunur.
Set Path + Query Aksiyonunun Önemi
Tam URL rewriting, hem path hem de parametrelerin kontrolünün gerektiği senaryolarda kullanılır.
Set Path + Query aksiyonu;
- Query string parametrelerini yeniden düzenler,
- Path ve parametreleri birlikte değiştirir,
- Eski URL formatlarını yeni formatlara dönüştürür,
- Parametre temizleme veya ekleme yapar,
- Kompleks URL dönüşümleri gerçekleştirir.
Bu nedenle Set Path + Query aksiyonu, tam URL kontrolü için güçlü bir araçtır.
Kullanılabildiği vService Tipleri
Çalışma Anı
Nasıl Eklenir?
Yeni bir Set Path + Query Aksiyonu, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlar izlenerek eklenebilir:
- Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
- Load Balancer → Actions → Add adımları takip edilir.
- Aksiyon için benzersiz ve açıklayıcı bir isim girilir.
- Action Type olarak Set Path + Query seçilir.
- Aksiyona ait ilgili konfigürasyonlar yapılandırılır.
- Conditions sekmesinden aksiyonun hangi koşul/koşullarda devreye gireceği belirlenir.
Addbutonuna tıklanarak aksiyon eklenir.
Set Path + Query Aksiyonu Ekleme Formu
Set Path + Query Aksiyonu Ekleme Formu
INFO
Hit Counter Varsayılan: Kapalı
Hit Counter, aksiyonun her çalışmasını sayar (aksiyonun kendi koşuluyla birlikte değerlendirilir; Deny gibi sonlandırıcı aksiyonlarda bile sayım kaybolmaz). Aksiyon bazlı hız ve toplamlar, vService panosundaki Action Hits sekmesinde ve canlı istatistik ekranında görüntülenir; listelerde ayrıca bir kolon olarak görünmez. Sayaç kümülatiftir; elle sıfırlama arayüzü yoktur: sayılan aksiyon kümesi değiştiğinde veya vService yeniden yüklendiğinde sıfırdan başlar, geçmiş ise panoda hız (hit/s) olarak korunur.
INFO
Set Variable on Hit
Aksiyon her çalıştığında değeri atanacak bir değişken adı girilebilir (isteğe bağlı; varsayılan boş). Ad; harf, rakam ve alt çizgiden oluşabilir (en fazla 32 karakter). Aksiyon tetiklendiğinde değişken 1 değerine atanır ve aynı vService'teki diğer koşul ve aksiyonlarda %TR7VAR(ad) akıllı değişkeniyle okunarak zincirleme davranışlar kurulabilir.
INFO
Path Operation Shortcuts
Sık kullanılan path düzenleme işlemleri için kısayol butonları sunar. Bir butona tıklandığında açılan formda gerekli değer girilir ve New Path Info alanı otomatik olarak doldurulur.
| Kısayol | Açıklama | Popup Formu | Sonuç (New Path Info) |
|---|---|---|---|
| Add prefix | Path'in başına önek ekler | Eklenecek önek (örn: /api) | /api [↓Path] [↓Query] |
| Remove prefix | Path'in başındaki öneki kaldırır | Silinecek önek (örn: /api) | [↓Path⇒>REPLACE.first(^/api->)] [↓Query] |
| Add suffix | Path'in sonuna sonek ekler | Eklenecek sonek (örn: .html) | [↓Path] .html [↓Query] |
| Remove suffix | Path'in sonundaki soneki kaldırır | Silinecek sonek (örn: .html) | [↓Path⇒>REPLACE.first(\.html$->)] [↓Query] |
| Find & replace | Path içindeki metni bulup değiştirir | Bulunacak metin ve yerine yazılacak metin | [↓Path⇒REPLACE.all(/old->/new)] [↓Query] |
Query String Korunması
Set Path aksiyonundan farklı olarak, Set Path + Query aksiyonunda kısayollar otomatik olarak [↓Query] değişkenini ekler. Bu sayede orijinal query string korunur. Eğer query string'in korunması istenmiyorsa, New Path Info alanından [↓Query] değişkeni manuel olarak kaldırılabilir.
INFO
New Path Info Zorunlu
Kurum Servisine gönderilecek yeni path ve query string değeri girilir. Path / ile başlamalı, query string ? ile ayrılmalıdır.
TIP
Bu alan Smart Variables destekler. fx butonu ile mevcut değişkenlere erişilebilir ve dinamik içerik oluşturulabilir.
Örnek değişkenler: istek dizini (İsteğin yapıldığı dizin/sayfa), tüm parametreler (Tüm istek parametreleri (query)) ve tek bir parametre (query parametresi). Sabit metin değerleriyle birlikte kullanılabilir.
WARNING
Tüm istek parametreleri (query) değişkeni parametreleri baştaki ? ile birlikte getirir. Bu değişkenden önce ayrıca ? yazılmamalıdır; yazılırsa adreste çift ? oluşur.
Detaylı bilgi Variables sayfasında yer alır.
Önemli notlar:
- Path'in
/ile başlaması gerekir (form bunu denetlemez) - Query string eklemek için
?kullanılır - Orijinal query string korunmaz: tamamen değiştirilir
- Smart Variables ile dinamik içerik oluşturulabilir
Format:
/yeni-path?param1=deger1¶m2=deger2Örnek Değerler
| Gelen İstek | New Path Info | Kurum Servisine Gönderilen |
|---|---|---|
/old?a=1&b=2 | /new?x=10 | /new?x=10 |
/search?q=test | /api/search?query=test&format=json | /api/search?query=test&format=json |
/page | [İsteğin yapıldığı dizin/sayfa]?source=tr7 | /page?source=tr7 |
INFO
Conditions
Bu alanda, ilgili aksiyonun hangi koşul veya koşullar sağlandığında devreye gireceği tanımlanır.
Bir veya birden fazla koşul eklenerek, and/or yapısı ile davranışın hedefli ve kontrollü şekilde uygulanması sağlanabilir.
Koşullar hakkında detaylı bilgi Conditions sayfasında yer alır.
WARNING
Bu alanda herhangi bir koşul tanımlanmazsa, ilgili aksiyon koşulsuz (Always) olarak çalışır. Bu durumda aksiyon, ilgili vService'e gelen tüm trafiğe uygulanır.
Canlı ortamlarda, koşul tanımlanmadan aksiyon kullanılması beklenmeyen durumlara (servis kesintilerine) yol açabilir. Bu nedenle aksiyon oluşturulurken mutlaka en az bir koşul tanımlanması önerilir.
INFO
Form Butonları
Add
Add butonuna tıklanarak aksiyon ekleme işlemi tamamlanır.
Add & Repeat
Add & Repeat butonu ile aksiyon ekleme işlemi tamamlanır ve farklı konfigürasyonlarla ilgili pencereden çıkılmadan yeni bir aksiyon daha eklenebilir.
Aksiyon Eklendi
Set Path vs Set Path + Query
İki aksiyon arasındaki kritik fark:
| Özellik | Set Path | Set Path + Query |
|---|---|---|
| Path değişir mi? | Evet | Evet |
| Query string değişir mi? | Hayır (korunur) | Evet (değişir) |
| Orijinal parametreler | Korunur | Kaybolur |
Karşılaştırma Örneği
Gelen istek: /search?q=laptop&page=2
Set Path + Query (/api/search?format=json değeri ile):
- Sonuç:
/api/search?format=json - Orijinal query string kayboldu
Set Path (/api/search değeri ile):
- Sonuç:
/api/search?q=laptop&page=2 - Query string korundu
Hangisini Kullanmalı?
- Sadece path değiştirilecek, parametreler korunacaksa → Set Path
- Parametreler de değiştirilecek veya temizlenecekse → Set Path + Query
INFO
Yönlendirme Değil, Yeniden Yazma
Bu aksiyon istemciye yönlendirme yanıtı göndermez. İstek, TR7 üzerinde yeniden yazılıp Kurum Servisine iletilir; istemci tarayıcısında adres değişmez ve ek bir gidiş-dönüş oluşmaz.
Aksiyon isteği sonlandırmaz; koşul sağlanmazsa hiçbir şey yapılmaz ve istek olağan akışına devam eder. Aynı vService'e birden fazla path düzenleme aksiyonu eklenebilir; bu durumda listede sonra gelen tanım öncekinin yazdığı değeri değiştirir.
Operasyonel ve Güvenli Kullanım Önerileri
- Orijinal parametrelerin kaybolacağı unutulmamalıdır. Bu aksiyon orijinal query string'i tamamen değiştirir; parametrelerin korunması gerekiyorsa Set Path aksiyonu kullanılır ya da orijinal query, Smart Variables ile yeni değere dâhil edilir.
- Parametrelerin korunması için Smart Variables kullanılır. Orijinal query string'in korunması için
/new-path[Tüm istek parametreleri (query)]biçimi kullanılır. - URL Encoding'e Dikkat Edin. Query string parametreleri URL encoded olmalıdır. Özel karakterler (boşluk, &, = vb.) encode edilmelidir.
- Koşullarla hedefli uygulama. Koşulsuz değişiklik tüm istekleri etkiler; belirli path'ler ya da desenler için koşul tanımlanır.
- Kurum Servisi beklentileri kontrol edilir. Yeni URL'nin Kurum Servisi tarafında beklenen biçimde olduğu doğrulanır.
Canlı Ortamlarda Yaygın Kullanım Senaryoları
Aşağıdaki örnekler, ilgili aksiyonun gerçek sistemlerde en sık karşılaşılan kullanım senaryolarında nasıl uygulandığını göstermektedir. Bu senaryolar, canlı ortamlarda yaygın olarak tercih edilen ve sahada edinilmiş deneyimlere dayanan pratikleri temel alır.
Senaryo 1: Hassas Query Parametrelerini Temizleme
Problem: Public API endpoint'lere gelen isteklerde debug parametreleri, session token'ları veya internal tracking ID'leri bulunuyor. Bu hassas bilgilerin Kurum Servisi loglarına yazılması güvenlik riski oluşturuyor.
Çözüm: Set Path + Query ile sadece path'i iletip tüm query parametrelerini temizleyerek hassas bilgilerin Kurum Servisine ulaşmasını engellemek.
Konfigürasyon:
- New Path Info:
[İsteğin yapıldığı dizin/sayfa] - Conditions:
- Path
/public/ile başlar ANDPath + Query içerirtoken
- Path
Sonuç:
- ✅
/public/api/data?token=secret123&debug=true→ Kurum Servisine sadece/public/api/datailetilir, hassas parametreler temizlenir. - ✅ Güvenlik logları temiz kalır, debug/token bilgileri Kurum Servisine sızmaz.
Senaryo 2: Otomatik Tracking Parametresi Enjeksiyonu
Problem: Tüm API isteklerine analytics için source=tr7 ve timestamp bilgisi eklenmesi gerekiyor. Mevcut query parametreleri korunmalı ancak tracking bilgisi otomatik olarak append edilmeli.
Çözüm: Set Path + Query ile orijinal path ve query'yi koruyup sonuna tracking parametrelerini eklemek.
Konfigürasyon:
- New Path Info:
[İsteğin yapıldığı dizin/sayfa][Tüm istek parametreleri (query)]&source=tr7 - Conditions:
- Path
/api/ile başlar ANDPath + Query içermezsource=
- Path
Sonuç:
- ✅
/api/products?category=laptop&limit=10→ Kurum Servisine/api/products?category=laptop&limit=10&source=tr7&ts=1640995200iletilir. - ✅ Orijinal parametreler korunur, otomatik tracking bilgisi eklenir, analytics eksiksiz çalışır.
Senaryo 3: Legacy API: Parametre Adı ve Format Dönüşümü
Problem: Eski API q parametresi ile arama yapıyor, yeni Kurum Servisi API'si term parametresi bekliyor. Ayrıca pagination için page/size yerine offset/limit kullanılmalı. Müşteriler eski formatı kullanmaya devam ediyor.
Çözüm: Set Path + Query ile eski parametre isimlerini yeni formata çevirip Kurum Servisinin beklediği yapıya dönüştürmek.
Konfigürasyon:
- New Path Info:
/api/v2/search?term=[q istek parametresi]&limit=20&format=json - Conditions:
- Path
/searchile eşittir ANDQuery Parameterqmevcut
- Path
Sonuç:
- ✅
/search?q=laptop&page=2→ Kurum Servisine/api/v2/search?term=laptop&limit=20&format=jsoniletilir. - ✅ Eski API müşterileri kod değiştirmeden yeni backend'i kullanır, parametre dönüşümü transparently yapılır.
Senaryo 4: RESTful Path'i Query String'e Dönüştürme
Problem: Modern frontend RESTful URL kullanıyor (/products/123/reviews), legacy PHP backend ise query string bekliyor (/product.php?id=123&action=reviews). Backend kodu değiştirilemez.
Çözüm: Set Path + Query ile RESTful path segment'lerini parse edip query parametrelerine dönüştürmek.
Konfigürasyon:
- New Path Info:
/product.php?action=reviews: dizinden değer çıkarmak gerekiyorsa istek dizini değişkenine metin bölme akıllı fonksiyonu uygulanır - Conditions:
- Path
^/products/[0-9]+/reviews$REGEX
- Path
Sonuç:
- ✅
/products/123/reviews→ Kurum Servisine/product.php?id=123&action=reviewsiletilir. - ✅ RESTful API → Legacy PHP transparent conversion, kod değişikliği gerekmez.
Senaryo 5: Cache-Busting Parametrelerini Kaldırma
Problem: Frontend static asset'ler için cache-busting parametreleri ekliyor (/app.js?v=1.2.3, /style.css?_=timestamp). Ancak Kurum Servisi bu parametreleri cache key'e dahil ediyor ve cache hit oranı düşüyor.
Çözüm: Set Path + Query ile static asset'ler için tüm query parametrelerini kaldırarak cache-friendly URL'ler oluşturmak.
Konfigürasyon:
Sonuç:
- ✅
/app.js?v=1.2.3→ Kurum Servisine/app.jsiletilir, cache-busting parametresi kaldırılır. - ✅
/style.css?_=1640995200→ Kurum Servisine/style.cssiletilir, cache hit oranı artar. - ✅ Static asset'ler için cache efficiency maksimize edilir.
Senaryo 6: Pagination Format Dönüşümü
Problem: Eski API page ve size parametreleri kullanıyor, yeni Kurum Servisi API'si offset ve limit bekliyor. Pagination formatı dönüştürülmeli, diğer parametreler (filters, sorting) korunmalı.
Çözüm: Set Path + Query ile pagination parametrelerini dönüştürüp diğer parametreleri koruyarak yeni API formatına uyum sağlamak.
Konfigürasyon:
- New Path Info:
/api/v2/products?limit=+ size query parametresi: sayısal dönüşüm gerekiyorsa parametre değişkenine çarpma/çıkarma akıllı fonksiyonları uygulanır - Conditions:
- Path
/api/productsile başlar ANDQuery Parameterpagemevcut
- Path
Sonuç:
- ✅
/api/products?page=3&size=20&category=electronics→ Kurum Servisine/api/v2/products?offset=40&limit=20&category=electronicsiletilir. - ✅ Pagination format dönüşümü yapılır, filter parametreleri korunur.
Senaryo 7: Kurum Servisine Sabit Parametre Ekleme
Problem: Kurum Servisi, isteğin hangi kanaldan geldiğini bilmek istiyor; ancak istemcinin bu bilgiyi göndermesi beklenemiyor.
Çözüm: Mevcut parametreler korunarak isteğe sabit bir parametre eklenir.
Konfigürasyon:
- New Path Info:
[İsteğin yapıldığı dizin/sayfa][Tüm istek parametreleri (query)]&channel=web - Conditions:
- Path ile başlar
/api/
- Path ile başlar
Sonuç:
- ✅
/api/products?size=L→ Kurum Servisine/api/products?size=L&channel=webiletilir. - ✅ Mevcut parametreler → Değişken sayesinde korunur.
- ⚠️ Parametresiz istek → Adres
/api/products&channel=webbiçiminde oluşur; bu senaryoda parametrenin her zaman var olduğu koşulla güvence altına alınmalıdır.
Senaryo 8: Query String'i Tamamen Yeniden Oluşturma
Problem: Public search endpoint'e gelen çok fazla gereksiz parametre var. Kurum Servisi API'sine sadece q (search term) ve limit parametreleri gönderilmeli, diğer tüm parametreler temizlenmeli.
Çözüm: Set Path + Query ile orijinal query'yi tamamen değiştirip sadece gerekli parametreleri içeren yeni query oluşturmak.
Konfigürasyon:
- New Path Info:
/api/search?q=[q istek parametresi]&limit=50 - Conditions:
- Path
/searchile eşittir
- Path
Sonuç:
- ✅
/search?q=laptop&debug=1&internal_id=xyz&tracking=abc→ Kurum Servisine/api/search?q=laptop&limit=50iletilir. - ✅ Gereksiz/hassas parametreler temizlenir, sadece search term ve limit iletilir.
Senaryo 9: Default Parametre Enjeksiyonu: Eksik Parametreleri Tamamlama
Problem: Bazı eski client'lar API isteklerinde format parametresi göndermiyor, Kurum Servisi API'si default olarak XML dönüyor. Tüm client'lar JSON almalı.
Çözüm: Set Path + Query ile orijinal parametreleri koruyup eksik format=json parametresini eklemek.
Konfigürasyon:
- New Path Info:
[İsteğin yapıldığı dizin/sayfa][Tüm istek parametreleri (query)]&format=json - Conditions:
- Path
/api/ile başlar ANDPath + Query içermezformat=
- Path
Sonuç:
- ✅
/api/users?limit=10→ Kurum Servisine/api/users?limit=10&format=jsoniletilir. - ✅ Eksik format parametresi otomatik eklenir, tüm client'lar JSON response alır, Kurum Servisi default XML davranışı override edilir.
