Koşullu Politika Çalıştırma
Koşullar, Politika Nedir? sayfasında açıklandığı gibi, politika yapılandırmasının bir parçasıdır. Politika oluştururken veya düzenlerken koşullar bölümünden koşul tanımları yapılır.
Koşullu Politika Çalıştırma Kavramı
Koşullu politika çalıştırma, politikaların belirli koşullara göre çalıştırılmasını sağlar. Apinizer'da koşullar kod yazmadan, Variable kullanarak ve form tabanlı yapılandırma ile oluşturulur.
Aşağıdaki diyagram, koşullu politika çalıştırmanın Gateway üzerinden nasıl gerçekleştiğini gösterir:
Form Tabanlı Koşul Oluşturma
Koşullu politika oluştururken aşağıdaki adımlar izlenir:
Karşılaştırmanın sol tarafındaki değişkeni seçersiniz. Bu değişken:
- Header değişkeni olabilir
- Query parametre değişkeni olabilir
- Mesaj içeriği değişkeni olabilir (JSONPath/XPath ile)
- Context değişkeni olabilir
- Sistem değişkeni olabilir
- Özel bir değişken olabilir
Değişkenin veri tipini seçersiniz:
- STRING: Metin karşılaştırmaları için
- NUMERIC: Sayısal karşılaştırmalar için
- DATE: Tarih karşılaştırmaları için (tarih formatı belirtilmelidir)
Dropdown menüden karşılaştırma operatörünü seçersiniz:
- Eşitlik, büyüktür, küçüktür gibi karşılaştırma operatörleri
- İçerir, başlar, biter gibi metin operatörleri
- Var, yok, boş gibi varlık kontrolü operatörleri
İkinci değerin kaynağını belirlersiniz:
- Sabit Değer: Doğrudan girilen sabit bir değer
- Değişken: Başka bir değişken seçimi (değişkenler arası karşılaştırma)
Karmaşık mantık için alt koşullar ekleyerek AND, OR, NOT operatörleriyle koşulları birleştirirsiniz.
Bu yaklaşım sayesinde kod yazmadan, form alanlarını doldurarak ve Variable'ları seçerek koşullu politikalar oluşturabilirsiniz.
Koşul Türleri ve Değişken Kullanımı
Koşullar, Variable kullanılarak oluşturulur. Değişkenler mesaj içeriğinden, header'lardan, query parametrelerinden veya context'ten değer alabilir.
Mesaj İçeriği Koşulları
Mesaj içeriğine göre koşullar oluşturmak için JSONPath veya XPath kullanarak değişken tanımlanır:
JSON mesajlarında değer çıkarmak için:
- Değişken Tipi: Mesaj İçeriği (JSONPath)
- JSONPath İfadesi:
$.user.roleveya$.products[*].price - Veri Tipi: STRING veya NUMERIC
XML mesajlarında değer çıkarmak için:
- Değişken Tipi: Mesaj İçeriği (XPath)
- XPath İfadesi:
/user/roleveya//product/@price - Veri Tipi: STRING veya NUMERIC
HTTP header değerlerine göre:
- Değişken Tipi: Header
- Header Adı:
Content-TypeveyaX-API-Version - Veri Tipi: STRING
Query parametrelerine göre:
- Değişken Tipi: Query Parameter
- Parametre Adı:
versionveyaformat - Veri Tipi: STRING
İstemci Koşulları
İstemci bilgilerine göre koşullar oluşturmak için ilgili değişkenler kullanılır:
IP Adresi
IP adresine göre kontrol için:
- Değişken Tipi: Client IP
- Veri Tipi: STRING
- Operatör: IN veya NOT_IN
- Değer:
192.168.1.0/24#10.0.0.0/8(liste değerleri # ile ayrılır)
IP whitelist/blacklist kontrolü için kullanılır.
User Agent
User-Agent header'ına göre kontrol için:
- Değişken Tipi: Header
- Header Adı:
User-Agent - Veri Tipi: STRING
- Operatör: CONTAINS veya STARTS_WITH
Browser veya mobile device kontrolü için kullanılır.
API Key
API Key değerine göre kontrol için:
- Değişken Tipi: Header
- Header Adı:
X-API-KeyveyaAuthorization - Veri Tipi: STRING
- Operatör: EQ veya IN
API Key tipine veya değerine göre farklı politikalar uygulanabilir.
Context Değerleri
Context'teki kullanıcı bilgilerine göre kontrol için:
- Değişken Tipi: Context Variable
- Değişken Adı:
context.user.roleveyacontext.user.id - Veri Tipi: STRING
- Operatör: EQ, IN, vb.
Kullanıcı rolü veya kimlik bilgilerine göre yetkilendirme için kullanılır.
Zaman Koşulları
Zaman bazlı koşullar için sistem değişkenleri kullanılır:
- Değişken Tipi: System Variable (tarih değişkeni)
- Veri Tipi: DATE
- Tarih Formatı:
yyyy-MM-dd(belirtilmelidir) - Operatör: GE, LE, GT, LT
Belirli tarih aralığında erişim kontrolü için kullanılır.
- Değişken Tipi: System Variable (saat değişkeni)
- Veri Tipi: STRING veya DATE (saat formatına göre)
- Operatör: GE, LE
Çalışma saatleri kontrolü için kullanılır.
- Değişken Tipi: System Variable (gün değişkeni)
- Veri Tipi: STRING
- Operatör: EQ veya IN
Haftanın belirli günlerinde erişim kontrolü için kullanılır.
- Değişken Tipi: System Variable (timezone değişkeni)
- Veri Tipi: STRING
- Operatör: EQ
Zaman dilimi bazlı kontrol için kullanılır.
Sistem ve Ortam Koşulları
Sistem ve ortam değişkenlerine göre koşullar:
Environment Variable
Ortam değişkenlerine göre kontrol için:
- Değişken Tipi: Environment Variable
- Değişken Adı:
ENVIRONMENTveyaFEATURE_FLAG - Veri Tipi: STRING
- Operatör: EQ, NE, vb.
Ortam bazlı (development, test, production) kontrol için kullanılır.
System Property
Sistem özelliklerine göre kontrol için:
- Değişken Tipi: System Property
- Property Adı:
app.versionveyasystem.property - Veri Tipi: STRING
- Operatör: EQ, NE, vb.
Sistem versiyonu veya özellik kontrolü için kullanılır.
Cache Değeri
Cache'deki değerlere göre kontrol için:
- Değişken Tipi: Cache Variable
- Cache Key:
user.statusveya cache key'i - Veri Tipi: STRING
- Operatör: EQ, IS_EXISTS, vb.
Cache'deki değerlere göre dinamik kontrol için kullanılır.