Ana içeriğe geç

Endpoint

Endpoint Özellikleri

Path

Endpoint'in URL yolu. Örneğin: /api/v1/products

Method

HTTP method. GET, POST, PUT, DELETE, PATCH vb.

Operation

Endpoint'in gerçekleştirdiği işlem. Örneğin: "Ürün listesi getir"

Backend Mapping

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

GET /api/v1/products

Ürün listesi getir

GET /api/v1/products/{id}

Tek ürün detayı getir

POST /api/v1/products

Yeni ürün oluştur

PUT /api/v1/products/{id}

Ürün güncelle

DELETE /api/v1/products/{id}

Ü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}
bilgi

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 Endpoint

REST API'ler için endpoint'ler

JSON formatında veri alışverişi. RESTful tasarım prensiplerine uygun endpoint'ler.

SOAP Endpoint

SOAP Web Servisleri için endpoint'ler

XML formatında veri alışverişi. WSDL tanımları ile yapılandırılır.

gRPC Endpoint

gRPC servisleri için endpoint'ler

Protobuf formatında veri alışverişi. Yüksek performanslı RPC çağrıları.

WebSocket Endpoint

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:

Endpoint Bazlı Güvenlik

Her endpoint için farklı güvenlik politikaları

OAuth2, JWT, API Key gibi güvenlik mekanizmaları endpoint bazında yapılandırılabilir.

Endpoint Bazlı Rate Limiting

Her endpoint için farklı rate limit

Endpoint bazında istek sayısı ve bant genişliği limitleri tanımlanabilir.

Endpoint Bazlı Dönüştürme

Her endpoint için farklı dönüştürme kuralları

JSON ↔ XML dönüşümü, veri mapping ve transformation endpoint bazında yapılabilir.

Endpoint Bazlı Doğrulama

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:

Version 1

/api/v1/products

İlk versiyon. Temel işlevsellik.

Version 2

/api/v2/products

Geliştirilmiş versiyon. Yeni özellikler.

Version 3

/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
bilgi

Endpoint, Client Route'dan gelen istekleri Upstream Target'a yönlendirirken, routing mantığı ve politikaları uygular.

Sonraki Adımlar