Ana içeriğe geç

Client Route

Client Route Özellikleri

Apinizer'ın Client Route özelliği, API Gateway'de gelen isteklerin daha esnek ve dinamik bir şekilde yönlendirilmesini sağlar:

Çoklu Path

Bir API Proxy'ye birden fazla relative path tanımlanabilir

Host Bazlı Yönlendirme

Host bilgisine göre farklı API Proxy'lere yönlendirme yapılabilir

Header Bazlı Yönlendirme

HTTP header değerlerine göre yönlendirme kuralları oluşturulabilir

Method Bazlı Yönlendirme

Method bazlı yönlendirme yapılabilir

bilgi

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.

Client Route Nasıl Çalışır?

Client Route özelliği, gelen istekleri belirli bir öncelik sırasına göre değerlendirerek doğru API Proxy'ye yönlendirir.

İş Akışı

Aşağıdaki diyagram, istek ve yanıt akışının Gateway üzerinden nasıl gerçekleştiğini gösterir:

sequenceDiagram
participant Client as 👤 İstemci
participant Gateway as 🚪 API Gateway
participant ClientRoute as 🔀 Client Route
participant Proxy as 📦 API Proxy
participant Backend as 🖥️ Backend Servis

Client->>Gateway: HTTP İsteği<br/>(Path, Host, Headers, Method)

Note over Gateway: İstek Gateway'e Ulaştı

Gateway->>ClientRoute: İsteği Client Route'a Yönlendir

Note over ClientRoute: Client Route Değerlendirme

ClientRoute->>ClientRoute: 1️⃣ Path Kontrolü<br/>(En Yüksek Öncelik)
ClientRoute->>ClientRoute: 2️⃣ Host Kontrolü<br/>(OR Mantığı)
ClientRoute->>ClientRoute: 3️⃣ Header Kontrolü<br/>(AND Mantığı)
ClientRoute->>ClientRoute: 4️⃣ Method Kontrolü<br/>(En Düşük Öncelik)

alt Tüm Koşullar Sağlandı
ClientRoute->>Proxy: Uygun API Proxy'ye Yönlendir
Note over Proxy: Politika İşleme<br/>Mesaj Dönüşümü
Proxy->>Backend: İstek Backend'e İletilir
Backend->>Proxy: Yanıt Döner
Proxy->>Gateway: İşlenmiş Yanıt
Gateway->>Client: HTTP Yanıtı
else Koşullar Sağlanmadı
ClientRoute->>Gateway: Proxy Bulunamadı
Gateway->>Client: 404 Not Found
end

Note over Client,Gateway: İşlem Tamamlandı

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:

Hosts: hostname_x.com, hostname_y.com

İstekteki Host header değeri 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:

Headers: testmode:true, test:true

İstekte hem 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ı

uyarı

Wildcard Kuralları:

  • Domain'in en solundaki veya en sağındaki label'ında yalnızca bir adet asterisk (*) içerebilir
  • Asterisk, domain'in başında veya sonunda kullanılabilir

Wildcard Örnekleri

Sol Taraf Wildcard
*.example.com

Eşleşen Host'lar:

  • a.example.com
  • x.y.example.com
  • api.example.com
  • test.subdomain.example.com
Sağ Taraf Wildcard
example.*

Eşleşen Host'lar:

  • 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:

ipucu

Bu senaryo, Client Route'un öncelik sırası ve eşleştirme mantığını anlamak için kullanılacaktır.

Proxy IDRelative PathMethodsHosts (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

İstek:

GET https://<ACCESS_URL>/jokes

Sonuç: Proxy 5'e yönlendirilir (herhangi bir koşul sağlanmadığı için varsayılan proxy)

ipucu

Path eşleşti ancak host ve header koşulları sağlanmadığı için en basit yapılandırmaya sahip Proxy 5 seçilir.

Örnek 2: Host Bazlı Yönlendirme

İstek:

GET https://<ACCESS_URL>/jokes
Host: hostname_x.com

Sonuç: Proxy 2'ye yönlendirilir (host koşulu sağlandı)

ipucu

Host önceliği header'dan yüksek olduğu için Proxy 2 seçilir.

Örnek 3: Eksik Header ile Yönlendirme

İstek:

GET https://<ACCESS_URL>/jokes
testmode: true

Sonuç: Proxy 5'e yönlendirilir (Proxy 1 için her iki header gerekli, sadece biri sağlandı)

ipucu

Header'lar AND mantığı ile çalıştığı için tüm header'ların eşleşmesi gerekir. Eksik header durumunda bir sonraki uygun proxy seçilir.

Örnek 4: Tam Header Eşleşmesi

İstek:

GET https://<ACCESS_URL>/jokes
testmode: true
test: true

Sonuç: Proxy 1'e yönlendirilir (tüm header koşulları sağlandı)

ipucu

Tüm header koşulları sağlandığı için Proxy 1 seçilir.

Örnek 5: Path Önceliği - Temel Path

İstek:

GET https://<ACCESS_URL>/jokes1

Sonuç: Proxy 4'e yönlendirilir (path tam eşleşme)

ipucu

Path önceliği en yüksek olduğu için tam eşleşen path'e sahip Proxy 4 seçilir.

Örnek 6: Path Önceliği - Uzun Path

İstek:

GET https://<ACCESS_URL>/jokes1/endpoint_x

Sonuç: Proxy 3'e yönlendirilir (daha spesifik path öncelikli)

ipucu

Daha spesifik (uzun) path'ler, daha genel (kısa) path'lerden önce değerlendirilir.

Örnek 7: Path ile Alt Yol

İstek:

GET https://<ACCESS_URL>/jokes1/endpoint_x/endpoint_y

Sonuç: Proxy 3'e yönlendirilir (en yakın parent path eşleşmesi)

ipucu

Tam eşleşme bulunamazsa, en yakın parent path kullanılır.

Örnek 8: Path Eşleşmesi - Farklı Alt Yol

İstek:

GET https://<ACCESS_URL>/jokes1/endpoint_y

Sonuç: Proxy 4'e yönlendirilir (parent path olarak /jokes1 eşleşti)

ipucu

/jokes1/endpoint_y path'i için tam eşleşme yok, bu yüzden parent path olan /jokes1 eşleşmesi kullanılır.

Örnek 9: Host ve Header Kombinasyonu

İstek:

GET https://<ACCESS_URL>/jokes
Host: hostname_x.com
testmode: true
test: true

Sonuç: Proxy 2'ye yönlendirilir (host, header'dan daha yüksek önceliğe sahip)

ipucu

Host önceliği header'dan yüksek olduğu için, host koşulu sağlandığında header koşulları göz ardı edilir ve Proxy 2 seçilir.

Örnek 10: Farklı Path ile Host ve Header

İstek:

GET https://<ACCESS_URL>/jokes1
Host: hostname_x.com
testmode: true
test: true

Sonuç: Proxy 4'e yönlendirilir (path önceliği en yüksek, host ve header'lar göz ardı edilir)

ipucu

Path önceliği en yüksek olduğu için, path eşleşmesi sağlandığında host ve header koşulları göz ardı edilir.

Önemli Notlar

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
  • 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
  • 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 kontrolü en düşük önceliğe sahiptir
  • Belirtilmezse tüm HTTP methodları kabul edilir

Routing Kombinasyon Tablosu

Bu tablo API Proxy açısından, API Proxy'nin nasıl seçildiğini göstermektedir:

ipucu

Bu tablo, Client Route'un farklı koşulları nasıl değerlendirdiğini anlamak için referans olarak kullanılabilir.

DurumAçıklama
YokAPI proxy tanımında bulunmamaktadır. Client'ın gönderdiği kontrol edilmez.
EşleştiAPI proxy tanımında bulunmaktadır. Client'ın gönderdiği kontrol edilir, beklenen değeri gönderdi.
EşleşmediAPI proxy tanımında bulunmaktadır. Client'ın gönderdiği kontrol edilir, beklenen değeri göndermedi.
bilgi

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.

Sonraki Adımlar