API Çağrısı
Bu doküman spesifik bir politikanın detaylı kullanımını anlatır. Eğer Apinizer politika yapısını ilk kez kullanıyorsanız veya politikaların genel çalışma prensiplerini öğrenmek istiyorsanız, öncelikle Politika Nedir? sayfasını okumanızı öneririz.
Genel Bakış
API Call politikası, API Gateway üzerinden başka REST API'leri çağırarak mikroservis mimarisinde servis-servis iletişimi kurar. Gelen istekleri backend sistemlere yönlendirir, yanıtları işler ve API Proxy akışına entegre eder. Bu sayede harici servislerden veri çekmek, istekleri zenginleştirmek veya birden fazla kaynaktan gelen yanıtları birleştirmek mümkün olur.
Amacı Nedir?
- API Gateway üzerinden geçen istekleri başka bir REST API'ye yönlendirerek mikroservis mimarilerinde servis-servis iletişimini sağlamak.
- Gelen istekleri zenginleştirmek, dönüştürmek ve birden fazla backend servisinden veri toplayarak birleştirilmiş yanıtlar oluşturmak (API Orchestration).
- Harici sistemlerden (CRM, ERP, ödeme gateway'leri vb.) veri çekmek veya veri göndermek için güvenli ve yönetilebilir bir köprü oluşturmak.
- Request ve Response mesajları üzerinde header, parameter ve body manipülasyonu yaparak veri dönüşümü gerçekleştirmek.
- Cache mekanizması ile sık kullanılan API çağrılarının sonuçlarını önbelleğe alarak performansı artırmak ve backend sistemlere olan yükü azaltmak.
Çalışma Prensibi
- İstek Gelişi: API Gateway'e gelen her HTTP/HTTPS isteği için, REST API Call politikası aktif ise çağrı işlemi başlatılır.
- Politika Kontrolü: Sistem aşağıdaki sırayla kontrol yapar:
- Condition (koşul) tanımlı mı? Varsa koşul sağlanıyor mu?
- Politika aktif mi (active=true)?
- Variable kullanılıyor mu yoksa Apinizer default mı?
- Request Hazırlama (Before Call): İstek gönderilmeden önce:
- Body temizlenir veya yeni içerik eklenir
- Header ve parametreler manipüle edilir (ekleme/silme)
- Data Manipulation kuralları uygulanır
- Cache kontrolü yapılır (varsa önbellekten döner)
- API Çağrısı: Tanımlanan URL'ye HTTP method ile istek gönderilir:
- Synchronous (Senkron): Yanıt beklenir ve işleme devam edilir
- Asynchronous (Asenkron): Yanıt beklenmeden işlem tamamlanır
- Response İşleme (After Call - Sadece Synchronous): Gelen yanıt işlenir:
- Body üzerinde dönüşüm yapılır (NOT_CHANGE, REPLACE, CLEAR)
- Header ve parametreler manipüle edilir
- Data Manipulation kuralları uygulanır
- Cache'e kaydedilir (aktifse)
- Hata İşleme: Bağlantı hatası, timeout veya beklenmeyen yanıtlar için özelleştirilebilir HTTP durum kodu ve hata mesajı döndürülür.
Özellikler ve Yetenekler
Temel Özellikler
- Çağrı Tipi Seçimi: Synchronous (yanıt bekle) veya Asynchronous (fire-and-forget) mod desteği. Asenkron modda yanıt işleme yapılmaz.
- HTTP Method Desteği: GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS, TRACE tüm HTTP methodlarını destekler.
- Timeout Yönetimi: API çağrılarında maksimum bekleme süresini saniye cinsinden tanımlayarak sonsuz beklemeleri önler ve sistem kaynaklarını korur.
- Aktif/Pasif Durum Kontrolü: Politikanın aktif veya pasif durumunu kolayca değiştirme (active/passive toggle). Pasif durumda politika uygulanmaz ancak yapılandırması saklanır.
- Koşul Bazlı Uygulama: Query Builder ile karmaşık koşullar oluşturarak politikanın ne zaman uygulanacağını belirleme (örn: sadece belirli endpoint'lere veya header değerlerine göre).
İleri Düzey Özellikler
- Request/Response Manipülasyonu: Before Call ve After Call aşamalarında body, header ve parametreler üzerinde kapsamlı manipülasyon. XML, JSON, RAW, URL-Encoded formatlarını destekler.
- Data Manipulation: Kaynak ve hedef değişkenler arasında ADD (ekle), REPLACE (değiştir), DELETE (sil) operasyonları ile veri dönüştürme. Variable sistemini kullanarak dinamik veri işleme.
- Güvenli HTTPS ve mTLS: İstek Settings sekmesinde zaman aşımı ve güvenli bağlantı (TrustStore, KeyStore, isteğe bağlı PEM sertifikası, protokoller, hostname doğrulayıcı) ile arka uçta TLS/mTLS kullanabilirsiniz; sertifika ve KeyStore yönetimi Secret Manager ile uyumludur.
- Cache Mekanizması: Distributed (dağıtık) veya Local (yerel) cache desteği. Variable bazlı cache key tanımlama, capacity ve TTL ayarları, null response'ları cache'leme seçeneği.
- Test Helper: API çağrısı için URL'yi otomatik oluşturma. Mevcut API Proxy'lerden veya Proxy Group'lardan endpoint seçimi, environment bazlı test yapma.
- Export/Import Özelliği: Politika yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Development, Test, Production) import etme. Versiyon kontrolü ve yedekleme imkanı.
- Policy Group ve Proxy Group Desteği: Birden fazla politikayı Policy Group içinde yönetme. Proxy Group'lara toplu politika atama. Merkezi güncelleme ve deploy işlemleri.
- Deploy ve Versiyonlama: Politika değişikliklerini canlı ortama deploy etme. Hangi API Proxy'lerde kullanıldığını görme (Policy Usage). Proxy Group ve Policy Group kullanım raporları.
Kullanım Senaryoları
| Senaryo | Durum | Çözüm (Politika Uygulaması) | Beklenen Davranış / Sonuç |
|---|---|---|---|
| Mikroservis Entegrasyonu | Sipariş API'si, ödeme servisini çağırmalı | REST API Call politikası ile sipariş endpoint'ine gelen isteklerde ödeme servisine POST çağrısı yapılır. Body'de sipariş bilgileri gönderilir. | Ödeme servisi yanıtı alınır, başarılı ise sipariş onaylanır. Timeout 30 saniye. |
| Veri Zenginleştirme | Kullanıcı profil API'si, sadece ID ile gelir ancak detaylı bilgi gerekir | Gelen istek body'sindeki userId ile CRM sistemine GET çağrısı yapılır. Data Manipulation ile CRM yanıtı mevcut response'a eklenir. | İstemciye kullanıcı ID'si + tam profil bilgisi (ad, soyad, email) birleştirilmiş şekilde döner. |
| Authentication Token Yönetimi | Backend servisi API Key yerine JWT token bekliyor | Request Header'larından X-API-Key alınır, Authentication API'sine gönderilir. Dönen JWT token, Before Call aşamasında Authorization header'ına eklenir. | Backend servisi geçerli JWT token ile çağrılır. İstemci API Key kullanmaya devam eder. |
| Cache ile Performans | Ürün katalog API'si her çağrıda veritabanına gidiyor | REST API Call ile catalog servisi çağrılır. Cache aktif, capacity: 1000, TTL: 300 saniye. Cache By: "product.category" variable'ı. Storage: Distributed. | İlk çağrıda backend'e gidilir, sonuç 5 dakika cache'lenir. Aynı kategori için yapılan çağrılar cache'ten dönülür. |
| Async Log Gönderimi | Her API çağrısını harici log sistemine kaydetmek gerekiyor | Asynchronous REST API Call ile log servisine POST yapılır. Body'de request detayları gönderilir. Timeout: 5 saniye. | Log servisi yanıtı beklenmez, ana istek akışı kesintisiz devam eder. Fire-and-forget mantığı. |
| Üçüncü Parti API Gateway | Ödeme gateway'i özel header formatı bekliyor | Before Call aşamasında tüm header'lar silinir (removeAllHeadersBeforeCall: true). Yeni header'lar eklenir: X-Merchant-ID, X-Transaction-Type, Authorization (Bearer token). Body XML'den JSON'a dönüştürülür. | Ödeme gateway'i beklediği formatta istek alır, entegrasyon başarılı olur. |
| Certificate ile Güvenli İletişim | Backend servisi mutual TLS (mTLS) gerektiriyor | İstek Settings sekmesinde güvenli bağlantıyı açıp Yapılandır ile KeyStore ve TrustStore seçin. URL: https://secure-backend/api. Timeout: 60 saniye. | İstek istemci sertifikası ile gönderilir, backend karşılıklı TLS ile doğrular, güvenli iletişim sağlanır. |
Politika Parametrelerini Yapılandırma
Bu adımda, kullanıcı yeni bir politika oluşturabilir ya da mevcut politika parametrelerini yapılandırarak erişim kurallarını belirleyebilir. Tanımlanan parametreler, politikanın çalışma şeklini (örneğin hangi IP'lerin izinli olacağı, coğrafi kısıtlamalar, koşullu aktivasyonlar vb.) doğrudan etkiler. Bu sayede politika hem kuruma özel gereksinimlere göre özelleştirilebilir hem de merkezi olarak yönetilebilir.
Yeni API Call Politikası Oluşturma