Endpoint
Endpoint Özellikleri
Endpoint'in URL yolu. Örneğin: /api/v1/products
HTTP method. GET, POST, PUT, DELETE, PATCH vb.
Endpoint'in gerçekleştirdiği işlem. Örneğin: "Ürün listesi getir"
Endpoint'in backend'deki karşılığı
Endpoint İşleme Akışı
Aşağıdaki diyagram, endpoint'in istek ve yanıt akışında nasıl çalıştığını ve path rewriting işlemini gösterir:
sequenceDiagram
participant Client as 👤 İstemci
participant Gateway as 🚪 API Gateway
participant ClientRoute as 🔀 Client Route
participant Endpoint as 📍 Endpoint
participant Policies as 🛡️ Endpoint Politikaları
participant PathRewrite as 🔄 Path Rewriting
participant Routing as ⚙️ Routing Logic
participant Upstream as 🎯 Upstream Target
participant Backend as 🖥️ Backend API
Client->>Gateway: HTTP İsteği<br/>GET /api/v1/products
Note over Gateway: İstek Gateway'e Ulaştı
Gateway->>ClientRoute: Client Route'a Yönlendir<br/>Path: /api/v1/*
Note over ClientRoute: Client Route Değerlendirme<br/>Path, Host, Header, Method
ClientRoute->>Endpoint: Uygun Endpoint Bulundu<br/>GET /api/v1/products
Note over Endpoint: Endpoint İşleme Başladı
Endpoint->>Policies: Endpoint Bazlı Politikalar<br/>Uygulanır
Note over Policies: Endpoint Özel Politikalar:<br/>Güvenlik, Rate Limiting,<br/>Doğrulama, Dönüştürme
Policies->>PathRewrite: Path Rewriting<br/>İşlemi
Note over PathRewrite: Path Dönüşümü:<br/>Client Path: /api/v1/products<br/>↓ (Path Rewrite)<br/>Backend Path: /products<br/>veya<br/>Backend Path: /v2/products
PathRewrite->>Routing: Dönüştürülmüş Path<br/>Routing Logic'e İletilir
Note over Routing: Routing İşlemleri:<br/>Load Balancing<br/>Failover<br/>Path Rewrite Uygulanır
Routing->>Upstream: Upstream Target Seçildi<br/>Backend Path ile
Note over Upstream: Backend Mapping:<br/>Backend Path: /products<br/>Backend Method: GET
Upstream->>Backend: İstek Backend'e İletilir<br/>GET http://backend:8080/products
Backend->>Upstream: Yanıt Döner<br/>200 OK
Upstream->>Routing: İşlenmiş Yanıt
Routing->>Endpoint: Routing Tamamlandı
Endpoint->>Policies: Post-flow Politikaları<br/>(Yanıt için)
Policies->>ClientRoute: Endpoint İşleme Tamamlandı
ClientRoute->>Gateway: İşlenmiş Yanıt
Gateway->>Client: HTTP Yanıtı<br/>200 OK
Note over Client,Gateway: İşlem Tamamlandı
Note over PathRewrite,Backend: Path Rewriting:<br/>Client Path'i Backend Path'e<br/>Dönüştürür ve<br/>API Versiyonlama,<br/>Path Simplification<br/>Sağlar
Endpoint Yapısı
Bir endpoint şu bilgileri içerir:
GET /api/v1/products
│ │ │ │
│ │ │ └─ Resource (Kaynak)
│ │ └─ Version (Versiyon)
│ └─ Base Path (Temel Yol)
└─ HTTP Method (HTTP Metodu)
Örnek Endpoint'ler
Ürün listesi getir
Tek ürün detayı getir
Yeni ürün oluştur
Ürün güncelle
Ür ün sil
Endpoint ve Client Route İlişkisi
Endpoint'ler Client Route'un altında tanımlanır:
Client Route: /api/v1/*
│
├─ GET /api/v1/products
├─ GET /api/v1/products/{id}
├─ POST /api/v1/products
├─ PUT /api/v1/products/{id}
└─ DELETE /api/v1/products/{id}
Client Route, endpoint'lerin üst seviye yapılandırmasıdır. Bir Client Route altında birden fazla endpoint tanımlanabilir. Endpoint'ler, Client Route'un path'i içinde spesifik path ve method kombinasyonlarıdır.
Endpoint Yapılandırması
Bir endpoint oluştururken şu bilgiler tanımlanır:
Temel Bilgiler
- Path: Endpoint'in URL yolu
- Method: HTTP method (GET, POST, PUT, DELETE, vb.)
- Operation ID: Endpoint'in benzersiz tanımlayıcısı
- Description: Endpoint'in açıklaması
Parametreler
- Query Parameters: URL'deki query string parametreleri
- Path Parameters: URL path'indeki dinamik parametreler (örn:
{id}) - Header Parameters: HTTP header parametreleri
Request ve Response
- Request Body: İstek gövdesi şeması (JSON, XML, vb.)
- Response: Yanıt şeması ve status code'ları
- Content-Type: İstek ve yanıt içerik tipleri
Backend Mapping
- Backend Path: Backend'deki karşılık gelen path
- Backend Method: Backend'deki HTTP method
- Path Rewrite: Path dönüşüm kuralları
Endpoint Türleri
REST API'ler için endpoint'ler
JSON formatında veri alışverişi. RESTful tasarım prensiplerine uygun endpoint'ler.
SOAP Web Servisleri için endpoint'ler
XML formatında veri alışverişi. WSDL tanımları ile yapılandırılır.
gRPC servisleri için endpoint'ler
Protobuf formatında veri alışverişi. Yüksek performanslı RPC çağrıları.
WebSocket bağlantıları için endpoint'ler
Gerçek zamanlı iletişim. İki yönlü veri alışverişi sağlar.
Endpoint ve Politika İlişkisi
Endpoint'lere özel politikalar uygulanabilir:
Her endpoint için farklı güvenlik politikaları
OAuth2, JWT, API Key gibi güvenlik mekanizmaları endpoint bazında yapılandırılabilir.
Her endpoint için farklı rate limit
Endpoint bazında istek sayısı ve bant genişliği limitleri tanımlanabilir.
Her endpoint için farklı dönüştürme kuralları
JSON ↔ XML dönüşümü, veri mapping ve transformation endpoint bazında yapılabilir.
Her endpoint için farklı doğrulama kuralları
Request/Response validation, schema doğrulama endpoint bazında yapılandırılabilir.
Endpoint Versiyonlama
Endpoint'ler versiyonlanabilir:
/api/v1/products
İlk versiyon. Temel işlevsellik.
/api/v2/products
Geliştirilmiş versiyon. Yeni özellikler.
/api/v3/products
En son versiyon. Güncel API.
Geriye Dönük Uyumluluk
Geriye dönük uyumluluk korunur. Eski versiyonlar çalışmaya devam eder ve yeni versiyonlar eski versiyonları etkilemez.
Kademeli Geçiş
Kademeli geçiş yapılabilir. İstemciler kendi hızlarında yeni versiyona geçebilir.
Versiyon Yönetimi
Farklı versiyonlar farklı ortamlara deploy edilebilir ve aynı anda çalışabilir. Versiyonlama sayesinde API yaşam döngüsü yönetilebilir.
Endpoint ve Routing İlişkisi
Endpoint'ler, Client Route ve Upstream Target arasında köprü görevi görür:
İstemci İsteği
│
▼
Client Route (/api/v1/*)
│
▼
Endpoint (GET /api/v1/products)
│
│ Routing Logic
│ (Load Balancing, Failover)
│
▼
Upstream Target (http://backend:8080/products)
│
▼
Backend API
Endpoint, Client Route'dan gelen istekleri Upstream Target'a yönlendirirken, routing mantığı ve politikaları uygular.