Genel Bakış
Amacı Nedir?
- Template ve form tabanlı mesaj oluşturarak değişken değerlerini hedef değişkenlere atamak.
- İstek veya yanıttaki body, header, query parametresi gibi kaynaklardan veri okuyup yeni değişkenler oluşturmak.
- JEXL expression’ları ile dinamik içerik üretmek ve birden fazla kaynaktan veri birleştirmek.
- Satır bazlı koşullu çalıştırma ile sadece belirli durumlarda değişken ataması yapmak.
Çalışma Prensibi
- İstek Gelişi: API Gateway’e gelen HTTP/HTTPS isteği için MessageContext oluşturulur.
- Politika Kontrolü: Mesaj Oluşturucu politikası aktif ise, 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)?
- Satır Zinciri Çalıştırma: Satır listesi (Row List) sırasıyla değerlendirilir. Her satır için:
- Satır koşulu kontrol edilir (varsa).
- Form modunda: Kaynak değişkenden değer okunur.
- Template modunda: Şablon
#{variable}syntax’ı ile işlenir, JEXL expression’lar evaluate edilir. - Sonuç hedef değişkene yazılır.
- Boş Değer İşleme:
- Değer boş ve
Zorunlu=trueise hata fırlatılır. - Değer boş ise varsayılan değer kullanılır.
- Değer boş ve
- Hata İşleme:
Hata Durumunda Devam Etaktifse satır atlanır ve sonraki satıra geçilir. Pasifse politika hata ile sonlanır.
Özellikler ve Yetenekler
Temel Özellikler
- İki Oluşturma Modu: Form modu (basit değişken kopyalama) ve Template modu (JEXL expression desteği ile dinamik içerik oluşturma).
- Satır Bazlı İşleme: Her satır bağımsız olarak yapılandırılabilir; kaynak, hedef, koşul, varsayılan değer ayrı ayrı belirlenir.
- Sürükle-Bırak Sıralama: Satır sırası sürükle-bırak ile kolayca değiştirilebilir.
- Aktif/Pasif Durum Kontrolü: Politikanın aktif veya pasif durumunu kolayca değiştirme. Pasif durumda politika uygulanmaz ancak yapılandırması saklanır.
- Koşul Bazlı Uygulama: Query Builder ile hem politika seviyesinde hem satır seviyesinde koşullar tanımlanabilir.
İleri Düzey Özellikler
- JEXL Expression Desteği: Template modunda
#{expression}syntax’ı ile matematiksel, mantıksal ve string operatörleri kullanılabilir. - Çoklu Değişken Kaynağı: Body (JSON/XML path), Header, Query/Path/Form parametreleri ve Context Variable’lardan veri okunabilir.
- Satır Seviyesi Hata Yönetimi: Her satır için
Hata Durumunda Devam EtveZorunlubayrakları ayrı ayrı ayarlanabilir. - 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ı
Politika Parametrelerini Yapılandırma
Bu bölümde yeni bir Mesaj Oluşturucu politikası oluşturabilir ya da mevcut politika parametrelerini yapılandırarak mesaj oluşturma kurallarını belirleyebilirsiniz. Aşağıdaki görsel Definition sekmesini gösterir: politika durumu, ad ve açıklama alanları; Satırlar (Rows) bölümü ve Add ile eklenen örnek Form satırı (kaynak/hedef değişken, varsayılan değer, zorunlu, hata durumunda devam) ve Template satırı (şablon düzenleyici ve hedef değişken). Üstte Conditions, Error Message Customization, API Proxies Using Policy, API Proxy Groups Using Policy sekmeleri de yer alır.

#{variableName} biçiminde değişken ipucu ve hedef değişken; Hata Durumunda Devam Et seçeneği bulunur.

Yeni Mesaj Oluşturucu Politikası Oluşturma
Yapılandırma Adımları
Koşullar ve Hata Mesajı Özelleştirme panellerinin açıklaması için Politika Nedir? sayfasındaki Koşullar ve Hata Mesajı Özelleştirme (Error Message Customization) bölümlerini inceleyebilirsiniz.
Hata mesajı yapılandırmasının tüm katmanları, öncelik sırası ve senaryo örnekleri için Hata Mesajı Yapılandırma Rehberi sayfasına bakın.
Satır Parametreleri
Template Syntax
Template modunda#{...} syntax’ı ile değişkenlere ve JEXL expression’lara erişilir:
Basit Değişken Erişimi:
JEXL Expression (Tek Satır):
#{...} bloğu içinde for, while, var, if/else ifadeleri kullanılabilir. Body’den JSONPath ile çekilen array ve object değerleri otomatik olarak liste ve haritaya dönüştürülür; for (item : collection) ile gezinilebilir.
Dizi Gezinme:
dtf.format() ile belirli bir saat diliminde tarih formatlanabilir. Varsayılan olarak #{dateTime.formattedText} UTC saati döndürür. Belirli bir saat diliminde almak için:
JEXL Script’te son değerlendirilen ifadenin değeri döndürülür.
return anahtar kelimesi kullanılmaz.
