Documentation Index
Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
Use this file to discover all available pages before exploring further.
Routing Kavramı
Routing, bir API Proxy’de iki temel bileşenden oluşur:Client Route
Upstream Target
Routing Akışı
Aşağıdaki diyagram, istek ve yanıt akışının Gateway üzerinden Routing ve Upstream mekanizması ile nasıl gerçekleştiğini gösterir:1. İstemci İsteği
2. Client Route
Path, Method, Protocol ve Port tanımları
3. Routing Logic
4. Upstream Target
Backend adresi, protokol ve yapılandırma
5. Backend API
Upstream Target
Upstream Target (Yukarı Akış Hedefi), API Proxy’de istemcilerden gelen isteklerin yönlendirildiği backend API’nin adresidir. Upstream Target, API Proxy’nin backend ile iletişim kurduğu noktadır.Upstream Target Genel Bakış
Upstream ve target kavramları, API Proxy’lerde backend servislere yönlendirme yapılırken kullanılan temel kavramlardır. Upstream Target, backend API’nin fiziksel veya mantıksal adresini temsil eder. API Proxy, Client Route’dan gelen istekleri bu hedefe yönlendirir.Backend Adresi
Protokol
Yük Dengeleme
Failover
Upstream ve Target
Upstream: API Proxy’nin istekleri yönlendirdiği backend servislerin tanımlandığı yapılandırmadır. Bir upstream birden fazla target içerebilir. Target: Upstream içinde tanımlanan backend servis adresleridir. Her target bir URL ve gerekli yapılandırma bilgilerini içerir.Upstream Target Yapısı
Bir Upstream Target şu bilgileri içerir:Örnek Upstream Target’lar
HTTP Target
HTTPS Target
gRPC Target
WebSocket Target
Upstream Target Yapılandırması
Bir Upstream Target oluştururken şu bilgiler tanımlanır:Temel Yapılandırma
Temel Yapılandırma
- URL: Backend API’nin adresi
- Protocol: HTTP, HTTPS, gRPC, WebSocket
- Host: Backend sunucu adı veya IP
- Port: Backend port numarası
- Path: Backend path’i (opsiyonel)
- Path Rewrite: Backend path’ini değiştirme (opsiyonel)
Path Rewrite
Path Rewrite
/api/v1/products→/products(prefix removal)/api/v1/products→/v2/products(version change)/api/products/{id}→/products/{id}(path simplification)
Timeout Ayarları
Timeout Ayarları
- Connection Timeout: Bağlantı zaman aşımı
- Read Timeout: Okuma zaman aşımı
- Write Timeout: Yazma zaman aşımı
Upstream Target Türleri
Single Target
Multiple Targets
Dynamic Target
Routing Türleri
Apinizer platformu farklı protokoller için routing desteği sağlar:HTTP Routing
gRPC Routing
WebSocket Routing
HTTP Routing
HTTP Routing, HTTP/HTTPS protokolü kullanan REST API’ler için routing desteğidir.HTTP Routing Özellikleri
Protokol Desteği
- HTTP/1.1
- HTTP/2
- HTTPS (TLS/SSL)
Method Desteği
- GET, POST, PUT, DELETE
- PATCH, HEAD, OPTIONS
- Custom methods
Content-Type
- application/json
- application/xml
- application/x-www-form-urlencoded
- multipart/form-data
Özellikler
- Path matching (exact, prefix, regex)
- Query parameter handling
- Header manipulation
- Body transformation
- Host bazlı routing
- Method bazlı routing
HTTP Routing Yapılandırması
HTTP Routing Kullanım Senaryoları
- REST API Gateway: REST API’lerin yönetimi
- API Versioning: API versiyonlama
- Legacy System Integration: Eski sistemlerle entegrasyon
- Public API Exposure: Dış dünyaya API açma
gRPC Routing
gRPC Routing, gRPC protokolü kullanan microservice’ler için routing desteğidir.gRPC Routing Özellikleri
Protokol Desteği
- gRPC (HTTP/2 üzerinde)
- gRPC-Web
- TLS/SSL desteği
Service Definition
- Protocol Buffers (Protobuf)
- Service definition
- Method routing
Özellikler
- Unary calls
- Server streaming
- Client streaming
- Bidirectional streaming
Load Balancing
- gRPC-aware load balancing
- Failover
gRPC Routing Yapılandırması
gRPC Routing Kullanım Senaryoları
- Microservice Communication: Microservice’ler arası iletişim
- High Performance APIs: Yüksek performans gereksinimleri
- Streaming APIs: Gerçek zamanlı veri akışı
- Internal APIs: İç sistem API’leri
WebSocket Routing
WebSocket Routing, WebSocket protokolü kullanan gerçek zamanlı uygulamalar için routing desteğidir.WebSocket Routing Özellikleri
Protokol Desteği
- WebSocket (ws://)
- Secure WebSocket (wss://)
- HTTP Upgrade
Bağlantı Yönetimi
- Connection establishment
- Connection persistence
- Connection pooling
Mesaj İşleme
- Text messages
- Binary messages
- Message routing
Özellikler
- Subprotocol support
- Ping/Pong frames
- Connection timeout
WebSocket Routing Yapılandırması
WebSocket Routing Kullanım Senaryoları
- Real-time Chat: Gerçek zamanlı sohbet uygulamaları
- Live Updates: Canlı güncellemeler
- Gaming: Oyun uygulamaları
- IoT: IoT cihazları ile iletişim
Protokol Karşılaştırması
| Özellik | HTTP | gRPC | WebSocket |
|---|---|---|---|
| Protokol | HTTP/1.1, HTTP/2 | HTTP/2 | WebSocket |
| Veri Formatı | JSON, XML | Protobuf | Text, Binary |
| İletişim | Request-Response | Request-Response, Streaming | Bidirectional |
| Performans | Orta | Yüksek | Yüksek (persistent) |
| Kullanım | REST API’ler | Microservices | Real-time apps |
| Browser Desteği | ✅ | ⚠️ (gRPC-Web) | ✅ |
Protokol Seçim Kılavuzu
Ne Zaman HTTP Kullanılmalı?
Ne Zaman HTTP Kullanılmalı?
- REST API’ler için
- Browser tabanlı uygulamalar için
- Geniş uyumluluk gereksinimleri için
- JSON/XML veri formatları için
Ne Zaman gRPC Kullanılmalı?
Ne Zaman gRPC Kullanılmalı?
- Microservice mimarileri için
- Yüksek performans gereksinimleri için
- Streaming gereksinimleri için
- İç sistem API’leri için
Ne Zaman WebSocket Kullanılmalı?
Ne Zaman WebSocket Kullanılmalı?
- Gerçek zamanlı iletişim için
- Canlı güncellemeler için
- Bidirectional iletişim için
- Düşük latency gereksinimleri için
Load Balancing Strategies
Backend’de birden fazla instance varsa, yük dengeleme stratejileri kullanılır. Yük dengeleme, trafiğin eşit dağıtılmasını, yüksek erişilebilirliği ve performans artışını sağlar.Load Balancing Stratejileri
Round Robin
Least Connections
Weighted Round Robin
Strateji Karşılaştırması
| Strateji | Yük Dağılımı | Karmaşıklık | Kullanım |
|---|---|---|---|
| Round Robin | Eşit | Düşük | Genel kullanım |
| Least Connections | İyi | Orta | Değişken süreler |
| Weighted Round Robin | Ağırlıklı | Orta | Farklı kapasiteler |
Best Practices
Strateji Seçimi
Strateji Seçimi
- Backend kapasitelerine göre strateji seçin
- Trafik desenlerini analiz edin
- İstek sürelerini değerlendirin
Monitoring
Monitoring
- Backend yük dağılımını izleyin
- Performans metriklerini takip edin
- Backend durumlarını düzenli kontrol edin
Routing Yapılandırması
Client Route Yapılandırması
Client Route, istemcilerden gelen isteklerin karşılandığı endpoint’i tanımlar:Path
/api/v1/productsMethod
Protocol
Port
Upstream Target Yapılandırması
Upstream Target, backend API’nin adresini tanımlar:URL
http://backend-service:8080Protocol
Timeout
Routing Özellikleri
Dinamik Yönlendirme
Apinizer’ın Client Route özelliği sayesinde dinamik yönlendirme yapılabilir:Host Bazlı Routing
Header Bazlı Routing
Method Bazlı Routing
Kombinasyon Bazlı Routing
Yönlendirme Öncelik Sırası
Gateway, gelen istekleri aşağıdaki öncelik sırasına göre değerlendirir:1. Relative Path
2. Hosts
3. Headers
4. Methods
- Hosts: Birden fazla host tanımlandığında OR mantığı ile çalışır (herhangi biri eşleşirse yeterli)
- Headers: Birden fazla header tanımlandığında AND mantığı ile çalışır (tümü eşleşmeli)
Path Matching
Path Matching
- Exact match: Tam eşleşme
- Prefix match: Önek eşleşmesi (daha spesifik path’ler önceliklidir)
- Regex match: Düzenli ifade eşleşmesi
Method Matching
Method Matching
- HTTP method kontrolü (GET, POST, PUT, DELETE)
- Method bazlı routing
- Method override desteği
- Method tanımlanmazsa tüm method’lar kabul edilir
Header Matching
Header Matching
- Header bazlı routing
- Content-Type bazlı routing
- Custom header bazlı routing
- AND mantığı: Tüm header’lar eşleşmeli
Host Matching
Host Matching
- Host header bazlı routing
- Wildcard hostname desteği (.example.com, example.)
- OR mantığı: Herhangi bir host eşleşirse yeterli
Query Parameter Matching
Query Parameter Matching
- Query parametresi bazlı routing
- Parametre değeri bazlı routing

