Client Route Özellikleri
Genel Bakış:
Çoklu Path
Bir API Proxy’ye birden fazla relative path tanımlayabilirsiniz
Host Bazlı Yönlendirme
Host bilgisine göre farklı API Proxy’lere yönlendirme yapabilirsiniz
Header Bazlı Yönlendirme
HTTP header değerlerine göre yönlendirme kuralları oluşturabilirsiniz
Method Bazlı Yönlendirme
HTTP method bazlı yönlendirme yapabilirsiniz
Bu özellik geliştirilmeden önce, her API Proxy için yalnızca tek bir benzersiz (unique) relative path tanımlanabiliyordu. Yeni özellik ile aynı relative path’e sahip birden fazla API Proxy oluşturulabilir ve bunlar arasında host, header veya method bilgilerine göre dinamik yönlendirme yapılabilir.
Yönlendirme Öncelik Sırası
Gateway, gelen istekleri aşağıdaki öncelik sırasına göre değerlendirir:1. Relative Path
En yüksek öncelik
2. Hosts
Host header kontrolü
3. Headers
Header kontrolü
4. Methods
En düşük öncelik
Eşleştirme Mantığı
Hosts (OR Mantığı)
Birden fazla host tanımlandığında OR mantığı ile çalışır. Yani tanımlanan hostlardan herhangi birinin eşleşmesi yeterlidir. Örnek:hostname_x.com veya hostname_y.com ise koşul sağlanır.
Headers (AND Mantığı)
Birden fazla header tanımlandığında AND mantığı ile çalışır. Yani tanımlanan tüm header’ların eşleşmesi gerekir. Örnek:testmode: true hem de test: true header’ları mevcut olmalıdır.
Path Eşleştirme
- Relative path eşleştirmesi en yüksek önceliğe sahiptir
- Daha spesifik (uzun) path’ler, daha genel (kısa) path’lerden önce değerlendirilir
- Tam eşleşme bulunamazsa, en yakın parent path kullanılır
Method Eşleştirme
- Method kontrolü en düşük önceliğe sahiptir
- Belirtilmezse tüm HTTP methodları kabul edilir
Wildcard Hostname Kullanımı
Apinizer, host tanımlamalarında esneklik sağlamak için wildcard (joker karakter) kullanımını destekler. Wildcard hostname’ler, belirli bir pattern’e uyan tüm Host header değerlerinin koşulu sağlamasına ve böylece ilgili Route ile eşleşmesine olanak tanır.Wildcard Kuralları
Wildcard Örnekleri
Sol Taraf Wildcard
- a.example.com
- x.y.example.com
- api.example.com
- test.subdomain.example.com
Sağ Taraf Wildcard
- example.com
- example.org
- example.net
- example.io
Örnek Senaryo
Aşağıdaki tabloda 5 farklı API Proxy ve bunlara tanımlanmış Client Route yapılandırmaları gösterilmektedir:| Proxy ID | Relative Path | Methods | Hosts (OR) | Headers (AND) |
|---|---|---|---|---|
| 1 | /jokes | - | - | testmode:true, test:true |
| 2 | /jokes | - | hostname_x.com, hostname_y.com | - |
| 3 | /jokes1/endpoint_x | - | - | - |
| 4 | /jokes1 | - | - | - |
| 5 | /jokes | - | - | - |
Yönlendirme Örnekleri
Bu yapılandırmaya göre gelen istekler şu şekilde yönlendirilir:Örnek 1: Temel Yönlendirme
Örnek 1: Temel Yönlendirme
İstek:Sonuç: Proxy 5’e yönlendirilir (herhangi bir koşul sağlanmadığı için varsayılan proxy)
Örnek 2: Host Bazlı Yönlendirme
Örnek 2: Host Bazlı Yönlendirme
İstek:Sonuç: Proxy 2’ye yönlendirilir (host koşulu sağlandı)
Örnek 3: Eksik Header ile Yönlendirme
Örnek 3: Eksik Header ile Yönlendirme
İstek:Sonuç: Proxy 5’e yönlendirilir (Proxy 1 için her iki header gerekli, sadece biri sağlandı)
Örnek 4: Tam Header Eşleşmesi
Örnek 4: Tam Header Eşleşmesi
İstek:Sonuç: Proxy 1’e yönlendirilir (tüm header koşulları sağlandı)
Örnek 5: Path Önceliği - Temel Path
Örnek 5: Path Önceliği - Temel Path
İstek:Sonuç: Proxy 4’e yönlendirilir (path tam eşleşme)
Örnek 6: Path Önceliği - Uzun Path
Örnek 6: Path Önceliği - Uzun Path
İstek:Sonuç: Proxy 3’e yönlendirilir (daha spesifik path öncelikli)
Örnek 7: Path ile Alt Yol
Örnek 7: Path ile Alt Yol
İstek:Sonuç: Proxy 3’e yönlendirilir (en yakın parent path eşleşmesi)
Örnek 8: Path Eşleşmesi - Farklı Alt Yol
Örnek 8: Path Eşleşmesi - Farklı Alt Yol
İstek:Sonuç: Proxy 4’e yönlendirilir (parent path olarak /jokes1 eşleşti)
Örnek 9: Host ve Header Kombinasyonu
Örnek 9: Host ve Header Kombinasyonu
İstek:Sonuç: Proxy 2’ye yönlendirilir (host, header’dan daha yüksek önceliğe sahip)
Örnek 10: Farklı Path ile Host ve Header
Örnek 10: Farklı Path ile Host ve Header
İstek:Sonuç: Proxy 4’e yönlendirilir (path önceliği en yüksek, host ve header’lar göz ardı edilir)
Routing Kombinasyon Tablosu
Bu tablo API Proxy açısından, API Proxy’nin nasıl seçildiğini göstermektedir:| Durum | Açıklama |
|---|---|
| Yok | API proxy tanımında bulunmamaktadır. Client’ın gönderdiği kontrol edilmez. |
| Eşleşti | API proxy tanımında bulunmaktadır. Client’ın gönderdiği kontrol edilir, beklenen değeri gönderdi. |
| Eşleşmedi | API proxy tanımında bulunmaktadır. Client’ın gönderdiği kontrol edilir, beklenen değeri göndermedi. |
| # | HOST | PATH | METHOD | HEADER | SONUÇ | AÇIKLAMA |
|---|---|---|---|---|---|---|
| 1 | Yok | Yok | Yok | Yok | ✓ SEÇİLİR | Hiçbir kriter tanımlı değil |
| 2 | Yok | Yok | Yok | Eşleşti | ✓ SEÇİLİR | Tüm tanımlı kriterler OK (HEADER) |
| 3 | Yok | Yok | Yok | Eşleşmedi | ✗ REDDEDİLİR | HEADER eşleşmediği için routing yapılamaz |
| 4 | Yok | Yok | Eşleşti | Yok | ✓ SEÇİLİR | Tüm tanımlı kriterler OK (METHOD) |
| 5 | Yok | Yok | Eşleşti | Eşleşti | ✓ SEÇİLİR | Tüm tanımlı kriterler OK (METHOD, HEADER) |
| 6 | Yok | Yok | Eşleşti | Eşleşmedi | ✗ REDDEDİLİR | HEADER eşleşmediği için routing yapılamaz |
| 7 | Yok | Yok | Eşleşmedi | Yok | ✗ REDDEDİLİR | METHOD eşleşmediği için routing yapılamaz |
| 8 | Yok | Yok | Eşleşmedi | Eşleşti | ✗ REDDEDİLİR | METHOD eşleşmediği için routing yapılamaz |
| 9 | Yok | Yok | Eşleşmedi | Eşleşmedi | ✗ REDDEDİLİR | METHOD, HEADER eşleşmediği için routing yapılamaz |
| 10 | Yok | Eşleşti | Yok | Yok | ✓ SEÇİLİR | Tüm tanımlı kriterler OK (PATH) |
| 11 | Yok | Eşleşti | Yok | Eşleşti | ✓ SEÇİLİR | Tüm tanımlı kriterler OK (PATH, HEADER) |
| 12 | Yok | Eşleşti | Yok | Eşleşmedi | ✗ REDDEDİLİR | HEADER eşleşmediği için routing yapılamaz |
| 13 | Yok | Eşleşti | Eşleşti | Yok | ✓ SEÇİLİR | Tüm tanımlı kriterler OK (PATH, METHOD) |
| 14 | Yok | Eşleşti | Eşleşti | Eşleşti | ✓ SEÇİLİR | Tüm tanımlı kriterler OK (PATH, METHOD, HEADER) |
| 15 | Yok | Eşleşti | Eşleşti | Eşleşmedi | ✗ REDDEDİLİR | HEADER eşleşmediği için routing yapılamaz |
| 16 | Yok | Eşleşti | Eşleşmedi | Yok | ✗ REDDEDİLİR | METHOD eşleşmediği için routing yapılamaz |
| 17 | Yok | Eşleşti | Eşleşmedi | Eşleşti | ✗ REDDEDİLİR | METHOD eşleşmediği için routing yapılamaz |
| 18 | Yok | Eşleşti | Eşleşmedi | Eşleşmedi | ✗ REDDEDİLİR | METHOD, HEADER eşleşmediği için routing yapılamaz |
| 19 | Yok | Eşleşmedi | Yok | Yok | ✗ REDDEDİLİR | PATH eşleşmediği için routing yapılamaz |
| 20 | Yok | Eşleşmedi | Yok | Eşleşti | ✗ REDDEDİLİR | PATH eşleşmediği için routing yapılamaz |
| 21 | Yok | Eşleşmedi | Yok | Eşleşmedi | ✗ REDDEDİLİR | PATH, HEADER eşleşmediği için routing yapılamaz |
| 22 | Yok | Eşleşmedi | Eşleşti | Yok | ✗ REDDEDİLİR | PATH eşleşmediği için routing yapılamaz |
| 23 | Yok | Eşleşmedi | Eşleşti | Eşleşti | ✗ REDDEDİLİR | PATH eşleşmediği için routing yapılamaz |
| 24 | Yok | Eşleşmedi | Eşleşti | Eşleşmedi | ✗ REDDEDİLİR | PATH, HEADER eşleşmediği için routing yapılamaz |
| 25 | Yok | Eşleşmedi | Eşleşmedi | Yok | ✗ REDDEDİLİR | PATH, METHOD eşleşmediği için routing yapılamaz |
| 26 | Yok | Eşleşmedi | Eşleşmedi | Eşleşti | ✗ REDDEDİLİR | PATH, METHOD eşleşmediği için routing yapılamaz |
| 27 | Yok | Eşleşmedi | Eşleşmedi | Eşleşmedi | ✗ REDDEDİLİR | PATH, METHOD, HEADER eşleşmediği için routing yapılamaz |
| 28 | Eşleşti | Yok | Yok | Yok | ✓ SEÇİLİR | Tüm tanımlı kriterler OK (HOST) |
| 29 | Eşleşti | Yok | Yok | Eşleşti | ✓ SEÇİLİR | Tüm tanımlı kriterler OK (HOST, HEADER) |
| 30 | Eşleşti | Yok | Yok | Eşleşmedi | ✗ REDDEDİLİR | HEADER eşleşmediği için routing yapılamaz |
| 31 | Eşleşti | Yok | Eşleşti | Yok | ✓ SEÇİLİR | Tüm tanımlı kriterler OK (HOST, METHOD) |
| 32 | Eşleşti | Yok | Eşleşti | Eşleşti | ✓ SEÇİLİR | Tüm tanımlı kriterler OK (HOST, METHOD, HEADER) |
| 33 | Eşleşti | Yok | Eşleşti | Eşleşmedi | ✗ REDDEDİLİR | HEADER eşleşmediği için routing yapılamaz |
| 34 | Eşleşti | Yok | Eşleşmedi | Yok | ✗ REDDEDİLİR | METHOD eşleşmediği için routing yapılamaz |
| 35 | Eşleşti | Yok | Eşleşmedi | Eşleşti | ✗ REDDEDİLİR | METHOD eşleşmediği için routing yapılamaz |
| 36 | Eşleşti | Yok | Eşleşmedi | Eşleşmedi | ✗ REDDEDİLİR | METHOD, HEADER eşleşmediği için routing yapılamaz |
| 37 | Eşleşti | Eşleşti | Yok | Yok | ✓ SEÇİLİR | Tüm tanımlı kriterler OK (HOST, PATH) |
| 38 | Eşleşti | Eşleşti | Yok | Eşleşti | ✓ SEÇİLİR | Tüm tanımlı kriterler OK (HOST, PATH, HEADER) |
| 39 | Eşleşti | Eşleşti | Yok | Eşleşmedi | ✗ REDDEDİLİR | HEADER eşleşmediği için routing yapılamaz |
| 40 | Eşleşti | Eşleşti | Eşleşti | Yok | ✓ SEÇİLİR | Tüm tanımlı kriterler OK (HOST, PATH, METHOD) |
| 41 | Eşleşti | Eşleşti | Eşleşti | Eşleşti | ✓ SEÇİLİR | Tüm tanımlı kriterler OK (HOST, PATH, METHOD, HEADER) |
| 42 | Eşleşti | Eşleşti | Eşleşti | Eşleşmedi | ✗ REDDEDİLİR | HEADER eşleşmediği için routing yapılamaz |
| 43 | Eşleşti | Eşleşti | Eşleşmedi | Yok | ✗ REDDEDİLİR | METHOD eşleşmediği için routing yapılamaz |
| 44 | Eşleşti | Eşleşti | Eşleşmedi | Eşleşti | ✗ REDDEDİLİR | METHOD eşleşmediği için routing yapılamaz |
| 45 | Eşleşti | Eşleşti | Eşleşmedi | Eşleşmedi | ✗ REDDEDİLİR | METHOD, HEADER eşleşmediği için routing yapılamaz |
| 46 | Eşleşti | Eşleşmedi | Yok | Yok | ✗ REDDEDİLİR | PATH eşleşmediği için routing yapılamaz |
| 47 | Eşleşti | Eşleşmedi | Yok | Eşleşti | ✗ REDDEDİLİR | PATH eşleşmediği için routing yapılamaz |
| 48 | Eşleşti | Eşleşmedi | Yok | Eşleşmedi | ✗ REDDEDİLİR | PATH, HEADER eşleşmediği için routing yapılamaz |
| 49 | Eşleşti | Eşleşmedi | Eşleşti | Yok | ✗ REDDEDİLİR | PATH eşleşmediği için routing yapılamaz |
| 50 | Eşleşti | Eşleşmedi | Eşleşti | Eşleşti | ✗ REDDEDİLİR | PATH eşleşmediği için routing yapılamaz |
| 51 | Eşleşti | Eşleşmedi | Eşleşti | Eşleşmedi | ✗ REDDEDİLİR | PATH, HEADER eşleşmediği için routing yapılamaz |
| 52 | Eşleşti | Eşleşmedi | Eşleşmedi | Yok | ✗ REDDEDİLİR | PATH, METHOD eşleşmediği için routing yapılamaz |
| 53 | Eşleşti | Eşleşmedi | Eşleşmedi | Eşleşti | ✗ REDDEDİLİR | PATH, METHOD eşleşmediği için routing yapılamaz |
| 54 | Eşleşti | Eşleşmedi | Eşleşmedi | Eşleşmedi | ✗ REDDEDİLİR | PATH, METHOD, HEADER eşleşmediği için routing yapılamaz |
| 55 | Eşleşmedi | Yok | Yok | Yok | ✗ REDDEDİLİR | HOST eşleşmediği için routing yapılamaz |
| 56 | Eşleşmedi | Yok | Yok | Eşleşti | ✗ REDDEDİLİR | HOST eşleşmediği için routing yapılamaz |
| 57 | Eşleşmedi | Yok | Yok | Eşleşmedi | ✗ REDDEDİLİR | HOST, HEADER eşleşmediği için routing yapılamaz |
| 58 | Eşleşmedi | Yok | Eşleşti | Yok | ✗ REDDEDİLİR | HOST eşleşmediği için routing yapılamaz |
| 59 | Eşleşmedi | Yok | Eşleşti | Eşleşti | ✗ REDDEDİLİR | HOST eşleşmediği için routing yapılamaz |
| 60 | Eşleşmedi | Yok | Eşleşti | Eşleşmedi | ✗ REDDEDİLİR | HOST, HEADER eşleşmediği için routing yapılamaz |
| 61 | Eşleşmedi | Yok | Eşleşmedi | Yok | ✗ REDDEDİLİR | HOST, METHOD eşleşmediği için routing yapılamaz |
| 62 | Eşleşmedi | Yok | Eşleşmedi | Eşleşti | ✗ REDDEDİLİR | HOST, METHOD eşleşmediği için routing yapılamaz |
| 63 | Eşleşmedi | Yok | Eşleşmedi | Eşleşmedi | ✗ REDDEDİLİR | HOST, METHOD, HEADER eşleşmediği için routing yapılamaz |
| 64 | Eşleşmedi | Eşleşti | Yok | Yok | ✗ REDDEDİLİR | HOST eşleşmediği için routing yapılamaz |
| 65 | Eşleşmedi | Eşleşti | Yok | Eşleşti | ✗ REDDEDİLİR | HOST eşleşmediği için routing yapılamaz |
| 66 | Eşleşmedi | Eşleşti | Yok | Eşleşmedi | ✗ REDDEDİLİR | HOST, HEADER eşleşmediği için routing yapılamaz |
| 67 | Eşleşmedi | Eşleşti | Eşleşti | Yok | ✗ REDDEDİLİR | HOST eşleşmediği için routing yapılamaz |
| 68 | Eşleşmedi | Eşleşti | Eşleşti | Eşleşti | ✗ REDDEDİLİR | HOST eşleşmediği için routing yapılamaz |
| 69 | Eşleşmedi | Eşleşti | Eşleşti | Eşleşmedi | ✗ REDDEDİLİR | HOST, HEADER eşleşmediği için routing yapılamaz |
| 70 | Eşleşmedi | Eşleşti | Eşleşmedi | Yok | ✗ REDDEDİLİR | HOST, METHOD eşleşmediği için routing yapılamaz |
| 71 | Eşleşmedi | Eşleşti | Eşleşmedi | Eşleşti | ✗ REDDEDİLİR | HOST, METHOD eşleşmediği için routing yapılamaz |
| 72 | Eşleşmedi | Eşleşti | Eşleşmedi | Eşleşmedi | ✗ REDDEDİLİR | HOST, METHOD, HEADER eşleşmediği için routing yapılamaz |
| 73 | Eşleşmedi | Eşleşmedi | Yok | Yok | ✗ REDDEDİLİR | HOST, PATH eşleşmediği için routing yapılamaz |
| 74 | Eşleşmedi | Eşleşmedi | Yok | Eşleşti | ✗ REDDEDİLİR | HOST, PATH eşleşmediği için routing yapılamaz |
| 75 | Eşleşmedi | Eşleşmedi | Yok | Eşleşmedi | ✗ REDDEDİLİR | HOST, PATH, HEADER eşleşmediği için routing yapılamaz |
| 76 | Eşleşmedi | Eşleşmedi | Eşleşti | Yok | ✗ REDDEDİLİR | HOST, PATH eşleşmediği için routing yapılamaz |
| 77 | Eşleşmedi | Eşleşmedi | Eşleşti | Eşleşti | ✗ REDDEDİLİR | HOST, PATH eşleşmediği için routing yapılamaz |
| 78 | Eşleşmedi | Eşleşmedi | Eşleşti | Eşleşmedi | ✗ REDDEDİLİR | HOST, PATH, HEADER eşleşmediği için routing yapılamaz |
| 79 | Eşleşmedi | Eşleşmedi | Eşleşmedi | Yok | ✗ REDDEDİLİR | HOST, PATH, METHOD eşleşmediği için routing yapılamaz |
| 80 | Eşleşmedi | Eşleşmedi | Eşleşmedi | Eşleşti | ✗ REDDEDİLİR | HOST, PATH, METHOD eşleşmediği için routing yapılamaz |
| 81 | Eşleşmedi | Eşleşmedi | Eşleşmedi | Eşleşmedi | ✗ REDDEDİLİR | HOST, PATH, METHOD, HEADER eşleşmediği için routing yapılamaz |
Önemli Notlar
Path Eşleştirme
Path Eşleştirme
- Relative path eşleştirmesi en yüksek önceliğe sahiptir
- Daha spesifik (uzun) path’ler, daha genel (kısa) path’lerden önce değerlendirilir
- Tam eşleşme bulunamazsa, en yakın parent path kullanılır
Host Eşleştirme
Host Eşleştirme
- Birden fazla host tanımlanabilir
- Hostlar OR mantığı ile çalışır
- İstekteki host değeri, tanımlanan hostlardan herhangi biriyle eşleşirse koşul sağlanır
Header Eşleştirme
Header Eşleştirme
- Birden fazla header tanımlanabilir
- Header’lar AND mantığı ile çalışır
- İstekte tanımlanan tüm header’lar mevcut olmalıdır
- Eksik veya hatalı header durumunda bir sonraki uygun proxy’ye geçilir
Method Eşleştirme
Method Eşleştirme
- Method kontrolü en düşük önceliğe sahiptir
- Belirtilmezse tüm HTTP methodları kabul edilir
Client Route özelliği, API Gateway’inizde karmaşık yönlendirme senaryolarını kolayca yönetmenizi sağlar. Öncelik sırası ve eşleştirme mantığını doğru anlayarak, esnek ve güçlü API yönlendirme yapılandırmaları oluşturabilirsiniz.

