Ana içeriğe atla

Variable Nedir?

Variable (değişken), API istekleri sırasında dinamik değerler kullanmanızı sağlayan bir sistemdir. Apinizer’da variable kavramı iki farklı aşamada karşınıza çıkar:

1. Variable Tanımı (Definition)

Variable dokümanında anlatılan, Project > Variables bölümünde oluşturduğunuz variable tanımlarıdır. Bu tanımlar, değişkenin nasıl oluşturulacağını ve nereden değer alacağını belirler. Variable Tanımı Türleri:
  • Header (Başlık): HTTP header’larından değer alır
  • Parameter (Parametre): URL parametrelerinden değer alır
  • Body (Gövde): Mesaj gövdesinden değer alır
  • Context Value (Ortam Değeri): Sistem özelliklerinden değer alır
  • Custom Variable (Özel Değişken): Script ile değer atanır

2. Runtime Variable Kullanımı

Bu sayfada anlatılan, runtime’da #{variableName} formatında kullanılan değişkenlerdir. Bu değişkenler iki kategoriye ayrılır:

Context Variable

Sistem tarafından otomatik oluşturulan değişkenler. Her istek için hazırdır ve direkt kullanılabilir.

Global Variable

Variable tanımı ile oluşturulan ve script ile değer atanan değişkenler. Policy’ler arasında veri aktarımı için kullanılır.
Önemli: Variable tanımı oluşturmak ile runtime’da variable kullanmak farklı şeylerdir. Variable tanımı, değişkenin nasıl oluşturulacağını belirler. Runtime kullanımı ise, oluşturulan değişkenin #{variableName} formatında kullanılmasıdır.

Variable Tanımı vs Runtime Variable Kullanımı

ÖzellikVariable TanımıRuntime Variable Kullanımı
Ne ZamanProje yapılandırması aşamasındaİstek işlenirken (runtime)
NeredeProject > VariablesPolicy ayarları, routing, header’lar vb.
FormatForm tabanlı tanım#{variableName} formatında kullanım
AmaçDeğişkenin nasıl oluşturulacağını tanımlamakDinamik değerleri kullanmak
Örnek”userId” adında Custom Variable tanımı oluşturma#{userId} şeklinde kullanma
Variable tanımları hakkında detaylı bilgi için Variable sayfasına bakabilirsiniz. Bu sayfa, runtime’da variable’ların nasıl kullanılacağını anlatmaktadır.

İki Tür Runtime Variable: Context ve Global

Apinizer’da runtime’da kullanabileceğiniz iki tür variable vardır:

Context Variable

Sistem tarafından otomatik oluşturulan değişkenler. Her istek için hazırdır ve direkt kullanılabilir.

Global Variable

Variable tanımı ile oluşturulan ve script ile değer atanan değişkenler. Policy’ler arasında veri aktarımı için kullanılır.

Context Variable Nedir?

Context variable’lar, sistem tarafından otomatik olarak oluşturulan ve her istek için hazır olan runtime değişkenlerdir. Bu değişkenler:
  • Variable tanımı gerektirmez - Hiçbir tanım yapmanıza gerek yoktur
  • İstek başladığında otomatik oluşturulur
  • Sistem tarafından otomatik değer atanır
  • Direkt #{variableName} formatında kullanılabilir
  • İstek bilgileri, tarih/saat, hata bilgileri gibi sistem verilerini içerir
Örnek: #{request.method}, #{dateTime.year}, #{message.correlationId}, #{error.message}, #{apiProxy.name}
Context variable’lar, Variable dokümanında anlatılan “Context Value” tipindeki variable tanımlarından farklıdır. Context Value tipindeki variable tanımları, form tabanlı yapılandırmada dropdown menüden sistem özelliklerini seçmenizi sağlar ve runtime’da #{variableName} formatında kullanılır. Context variable’lar ise runtime’da otomatik oluşturulan ve direkt #{request.method} gibi kullanılabilen değişkenlerdir (variable tanımı gerekmez).

Global Variable Nedir?

Global variable’lar, Variable tanımı ile oluşturulan ve script politikaları ile değer atanan runtime değişkenlerdir. Bu değişkenler:
  • Variable tanımı gerektirir - Önce Project > Variables’da “Custom Variable” tipinde tanım oluşturulur
  • Script politikası ile runtime’da değer atanır
  • Policy’ler arasında veri aktarımı için kullanılır
  • İhtiyacınıza göre özelleştirilebilir
Örnek: #{userId}, #{tenantId}, #{customValue}
Global variable’lar, Variable dokümanında anlatılan “Custom Variable” tipindeki variable tanımlarından oluşturulur. Variable tanımı oluşturduktan sonra, script politikası ile customVariableMap.put("variableName", "value") şeklinde değer atayarak runtime’da kullanabilirsiniz.

Farklar Nelerdir?

ÖzellikContext VariableGlobal Variable
Variable TanımıGerekmez - Sistem otomatik oluştururGerekir - Custom Variable tipinde tanım oluşturulur
Değer AtamaSistem otomatik atarScript ile değer atarsınız (customVariableMap.put())
Kullanım HazırlığıHer zaman hazırdırÖnce Variable tanımı, sonra script ile değer atama gerekir
Kapsamİstek bağlamı (request context)İstek bağlamı (request context)
Kullanım AmacıSistem bilgilerine erişimPolicy’ler arası veri aktarımı
Örnekler#{request.method}, #{dateTime.year}, #{error.message}#{userId}, #{tenantId}
Her iki tür de aynı şekilde kullanılır: #{variableName} formatında. Sistem otomatik olarak hangi değişkenin nereden geldiğini bilir ve çözümler.

Variable Tanımı Türleri ve Runtime Kullanımı

Variable dokümanında anlatılan 5 tip variable tanımının runtime kullanımı:
Variable Tanımı TürüRuntime KullanımıAçıklama
Header#{variableName}Variable tanımı oluşturduktan sonra, header’dan alınan değer #{variableName} formatında kullanılır
Parameter#{variableName}Variable tanımı oluşturduktan sonra, parametreden alınan değer #{variableName} formatında kullanılır
Body#{variableName}Variable tanımı oluşturduktan sonra, body’den alınan değer #{variableName} formatında kullanılır
Context Value#{variableName}Variable tanımı oluşturduktan sonra, seçilen sistem özelliğinden alınan değer #{variableName} formatında kullanılır
Custom Variable#{variableName}Variable tanımı oluşturduktan sonra, script ile değer atanır ve #{variableName} formatında kullanılır (Global Variable)
Önemli Fark: Context Value tipindeki variable tanımları ile Context Variable’lar karıştırılmamalıdır:
  • Context Value (Variable Tanımı): Form tabanlı yapılandırmada dropdown menüden sistem özelliklerini seçmenizi sağlar. Runtime’da #{variableName} formatında kullanılır (variable tanımındaki isimle).
  • Context Variable (Runtime): Sistem tarafından otomatik oluşturulan ve #{request.method} gibi direkt kullanılabilen değişkenlerdir (variable tanımı gerekmez).

Context Variable’lar

Ne Zaman Kullanılır?

Context variable’lar, sistem tarafından otomatik oluşturulur ve her zaman kullanılabilir. İstek bilgileri, tarih/saat veya hata bilgilerine ihtiyacınız olduğunda kullanın.

Runtime Kullanımı (# formatında)

Context variable’lar runtime’da #{category.property} formatında kullanılır. Örnek: #{request.method}, #{dateTime.year}, #{message.correlationId}

Script İçinde Kullanımı

Script politikaları içinde context variable’lar farklı bir formatta kullanılır. Script’te alt çizgi (_) ile ayrılmış format kullanılır:
  • Runtime: #{request.method} → Script: request_httpMethod
  • Runtime: #{dateTime.year} → Script: dateTime_year
  • Runtime: #{message.correlationId} → Script: message_correlationId
Script Örneği:
// Script içinde context variable kullanımı
String method = request_httpMethod
String correlationId = message_correlationId
String year = dateTime_year
String apiName = apiProxy_name

// Bu değerleri kullanarak işlem yapabilirsiniz
if (method == "POST") {
    customVariableMap.put("isPostRequest", "true")
}

Kullanılabilir Context Variable’lar

Request (İstek) Değişkenleri

İstek ile ilgili bilgiler:
Runtime FormatScript FormatNe İşe YararÖrnek Değer
#{request.method}request_httpMethodHTTP metoduGET, POST, PUT
#{request.uri}request_requestURITam istek URI’si/api/users/123
#{request.contentType}request_contentTypeİçerik tipiapplication/json
#{request.remoteAddress}request_remoteAddressİstemci IP adresi192.168.1.100
#{request.queryString}request_queryStringQuery parametreleri?id=123&name=test
#{request.pathInfo}request_pathInfoPath bilgisi/api/users
#{request.contextPath}request_contextPathContext path/apinizer
Runtime Kullanım Örneği:
İstek: #{request.method} #{request.uri} - IP: #{request.remoteAddress}
Sonuç:
İstek: GET /api/users/123 - IP: 192.168.1.100
Script Kullanım Örneği:
// Script içinde request variable kullanımı
String method = request_httpMethod
String uri = request_requestURI
String ip = request_remoteAddress

logger.info("Request: ${method} ${uri} - IP: ${ip}")

DateTime (Tarih/Saat) Değişkenleri

Tarih ve saat bilgileri:
Runtime FormatScript FormatNe İşe YararÖrnek Değer
#{dateTime.year}dateTime_yearYıl2026
#{dateTime.month}dateTime_monthAy (1-12)2
#{dateTime.dayOfMonth}dateTime_dayOfMonthGün (1-31)4
#{dateTime.dayOfWeek}dateTime_dayOfWeekHaftanın günü (1=Pazartesi, 7=Pazar)3
#{dateTime.hour}dateTime_hourSaat (0-23)14
#{dateTime.minute}dateTime_minuteDakika (0-59)30
#{dateTime.second}dateTime_secondSaniye (0-59)45
#{dateTime.timestamp}dateTime_epochMillisUnix timestamp (milisaniye)1707058245000
#{dateTime.formattedText}dateTime_formattedTextFormatlanmış tarih/saat2026-02-04T14:30:45.000Z
#{date.formattedText}date_formattedTextFormatlanmış tarih2026-02-04
#{time.formattedText}time_formattedTextFormatlanmış saat14:30:45
Runtime Kullanım Örneği:
Tarih: #{dateTime.formattedText} (#{dateTime.year} yılı)
Sonuç:
Tarih: 2026-02-04T14:30:45.000Z (2026 yılı)
Script Kullanım Örneği:
// Script içinde dateTime variable kullanımı
String year = dateTime_year
String formattedDate = dateTime_formattedText
long timestamp = Long.parseLong(dateTime_epochMillis)

logger.info("Year: ${year}, Date: ${formattedDate}, Timestamp: ${timestamp}")

Message (Mesaj) Değişkenleri

İstek mesajı ile ilgili bilgiler:
Runtime FormatScript FormatNe İşe YararÖrnek Değer
#{message.correlationId}message_correlationIdBenzersiz istek ID’siabc123-def456-ghi789
API Proxy veya Proxy Group üzerinde tanımlanan özel message variable’lar da burada görüntülenir.
Runtime Kullanım Örneği:
İstek ID: #{message.correlationId}
Sonuç:
İstek ID: abc123-def456-ghi789
Script Kullanım Örneği:
// Script içinde message variable kullanımı
String correlationId = message_correlationId
customVariableMap.put("requestId", correlationId)

API Değişkenleri

API Proxy bilgileri:
Runtime FormatScript FormatNe İşe YararÖrnek Değer
#{apiProxy.id}apiProxy_idAPI Proxy ID’siapi-proxy-123
#{apiProxy.name}apiProxy_nameAPI Proxy adıUser Management API
Runtime Kullanım Örneği:
API: #{apiProxy.name} (ID: #{apiProxy.id})
Sonuç:
API: User Management API (ID: api-proxy-123)
Script Kullanım Örneği:
// Script içinde apiProxy variable kullanımı
String apiId = apiProxy_id
String apiName = apiProxy_name

logger.info("API: ${apiName} (ID: ${apiId})")

Error (Hata) Değişkenleri

Hata durumlarında kullanılabilen değişkenler:
Runtime FormatScript FormatNe İşe YararÖrnek Değer
#{error.errorCode}error_errorCodeHata koduAUTH_FAILED
#{error.message}error_messageHata mesajıAuthentication failed
#{error.httpStatusCode}error_httpStatusCodeHTTP durum kodu401
#{error.originalMessage}error_originalMessageOrijinal hata mesajıInvalid credentials
#{error.customizedErrorCode}error_customizedErrorCodeÖzelleştirilmiş hata koduCUSTOM_001
#{error.customizedHttpCode}error_customizedHttpCodeÖzelleştirilmiş HTTP kodu400
#{error.customizedMessage}error_customizedMessageÖzelleştirilmiş mesajLütfen tekrar deneyin
#{error.defaultErrorCode}error_defaultErrorCodeVarsayılan hata koduDEFAULT_001
#{error.defaultMessage}error_defaultMessageVarsayılan mesajBir hata oluştu
#{error.defaultHttpCode}error_defaultHttpCodeVarsayılan HTTP kodu500
Runtime Kullanım Örneği:
{
  "error": {
    "code": "#{error.errorCode}",
    "message": "#{error.customizedMessage}",
    "requestId": "#{message.correlationId}"
  }
}
Sonuç:
{
  "error": {
    "code": "AUTH_FAILED",
    "message": "Lütfen tekrar deneyin",
    "requestId": "abc123-def456-ghi789"
  }
}
Script Kullanım Örneği:
// Script içinde error variable kullanımı (hata durumunda)
String errorCode = error_errorCode
String errorMessage = error_customizedMessage
int httpCode = Integer.parseInt(error_httpStatusCode)

logger.error("Error Code: ${errorCode}, Message: ${errorMessage}, HTTP Code: ${httpCode}")

Context Variable’lar Ne Zaman Oluşturulur?

  • Request değişkenleri: İstek başladığında otomatik oluşturulur
  • DateTime değişkenleri: İstek başladığında oluşturulur (o anki tarih/saat)
  • Message değişkenleri: İstek başladığında oluşturulur
  • API değişkenleri: API Proxy yüklendikten sonra oluşturulur
  • Error değişkenleri: Hata oluştuğunda otomatik oluşturulur

Global Variable Oluşturma ve Kullanımı

Ne Zaman Global Variable Kullanılır?

Global variable kullanmanız gereken durumlar:
  • Request body’den veri çıkarıp başka yerde kullanmak istediğinizde
  • Policy’ler arasında veri aktarımı yapmak istediğinizde
  • Hesaplanmış değerleri saklamak istediğinizde
  • Authentication sonrası kullanıcı bilgilerini saklamak istediğinizde

Adım Adım Kılavuz

1

Variable Tanımı Oluşturun

Project > Variables bölümüne gidin ve yeni bir Variable oluşturun. Type olarak Custom Variable seçin.
Variable tanımları hakkında detaylı bilgi için Variable sayfasına bakabilirsiniz.
2

Script Policy ile Değer Atayın

Script Policy içinde global variable’a değer atayın:
// customVariableMap otomatik olarak script'e binding olarak eklenir

// Basit değer atama
customVariableMap.put("userId", "12345")

// Header'dan değer alma
String authToken = headerMapFC.get("Authorization")
if (authToken != null) {
customVariableMap.put("authToken", authToken)
}

// Body'den JSON parse edip değer çıkarma
if (bodyTextFC != null && !bodyTextFC.isEmpty()) {
try {
def jsonBody = new groovy.json.JsonSlurper().parseText(bodyTextFC)
if (jsonBody.userId) {
customVariableMap.put("userId", jsonBody.userId.toString())
customVariableMap.put("userEmail", jsonBody.email ?: "")
}
} catch (Exception e) {
logger.error("Error parsing JSON body", e)
}
}
3

Global Variable'ı Kullanın

Oluşturduğunuz variable’ı başka policy’lerde veya ayarlarda kullanın:
Backend URL: https://api.example.com/users/#{userId}
Header: X-User-ID: #{userId}

Variable Tanımında Initialize with Script Kullanımı

Variable tanımında Initialize with Script özelliğini kullanarak, global variable’ın başlangıç değerini otomatik olarak belirleyebilirsiniz: Variable Tanımı Ayarları:
  • Name: Variable adı (örn: apiKey)
  • Type: Custom Variable seçin
  • Initialize with Script: Aktif edin
  • Script Language: Groovy veya JavaScript seçin
  • Script Body: Variable’ı initialize edecek script’i yazın
Script Örneği:
// Variable tanımı adı: "apiKey" (script'te aynı isim kullanılmalı)
// Header'dan API key'i al
String apiKey = headerMapFC.get("X-API-Key")
if (apiKey != null) {
    customVariableMap.put("apiKey", apiKey)  // Variable tanımındaki isimle aynı olmalı
} else {
    // Varsayılan değer
    customVariableMap.put("apiKey", "default-key")
}
Initialize with Script özelliği yalnızca değişken hiç oluşturulmamışsa veya null ise çalışır. Script içinde kullanılan variable adı, Variable tanımındaki ad ile birebir aynı olmalıdır (büyük/küçük harf duyarsız ama isim aynı olmalı).

Kullanım Örnekleri

Örnek 1: Hata Mesajlarında Variable Kullanımı

Amaç: Hata mesajlarını dinamik ve bilgilendirici hale getirmek. Hata Mesajı Şablonu:
{
  "error": {
    "code": "#{error.errorCode}",
    "message": "#{error.customizedMessage}",
    "requestId": "#{message.correlationId}",
    "timestamp": "#{dateTime.timestamp}",
    "path": "#{request.uri}",
    "method": "#{request.method}"
  }
}
Çözümlenmiş Örnek:
{
  "error": {
    "code": "AUTH_FAILED",
    "message": "Geçersiz kullanıcı adı veya şifre",
    "requestId": "abc123-def456-ghi789",
    "timestamp": "1707058245000",
    "path": "/api/auth/login",
    "method": "POST"
  }
}

Örnek 2: Backend Routing’te Global Variable Kullanımı

Amaç: Backend URL’lerini dinamik hale getirmek. Backend URL:
https://#{tenantId}.api.example.com/api/v1/#{apiProxy.name}/#{request.pathInfo}
Çözümlenmiş Örnek:
https://tenant-123.api.example.com/api/v1/users-api/api/users
Script ile tenantId Oluşturma:
// Script Policy - Request Pipeline

// Request body'den tenant ID çıkar
if (bodyTextFC != null && !bodyTextFC.isEmpty()) {
    try {
        def jsonBody = new groovy.json.JsonSlurper().parseText(bodyTextFC)
        if (jsonBody.tenantId) {
            customVariableMap.put("tenantId", jsonBody.tenantId.toString())
        }
    } catch (Exception e) {
        logger.error("Error parsing JSON body", e)
    }
}

// Veya header'dan al
String tenantId = headerMapFC.get("X-Tenant-ID")
if (tenantId != null) {
    customVariableMap.put("tenantId", tenantId)
}

Örnek 3: Response Header’larında Variable Kullanımı

Amaç: Response header’larına istek bilgilerini eklemek. Header Ayarları:
X-Request-ID: #{message.correlationId}
X-API-Name: #{apiProxy.name}
X-Request-Time: #{dateTime.timestamp}
X-Request-Date: #{dateTime.formattedText}
Çözümlenmiş Örnek:
X-Request-ID: abc123-def456-ghi789
X-API-Name: User Management API
X-Request-Time: 1707058245000
X-Request-Date: 2026-02-04T14:30:45.000Z

Örnek 4: Log Mesajlarında Variable Kullanımı

Amaç: Detaylı log mesajları oluşturmak. Log Mesajı:
[#{dateTime.formattedText}] #{request.method} #{request.uri} -
IP: #{request.remoteAddress} -
Correlation ID: #{message.correlationId} -
API: #{apiProxy.name} -
User: #{userId}
Çözümlenmiş Örnek:
[2026-02-04T14:30:45.000Z] GET /api/users/123 -
IP: 192.168.1.100 -
Correlation ID: abc123-def456-ghi789 -
API: User Management API -
User: [email protected]

Sık Karşılaşılan Sorunlar ve Çözümleri

Sorun 1: Variable Bulunamıyor

Belirtiler:
  • Variable boş string ("") olarak çözümleniyor
  • Log’da “Context variable ‘xxx’ not found” uyarısı var
Nedenler:
  1. Variable henüz oluşturulmamış (policy sırası sorunu)
  2. Variable ismi yanlış yazılmış
  3. Script çalışmamış veya hata vermiş
Çözümler: 1. Policy Sırasını Kontrol Edin:
Doğru Sıra:
1. Script Policy (variable oluşturur)
2. Routing Policy (variable kullanır)

Yanlış Sıra:
1. Routing Policy (variable henüz yok!)
2. Script Policy (variable oluşturur ama çok geç)
2. Variable İsmini Kontrol Edin:
// Script'te oluşturulan isim
customVariableMap.put("userId", "123")

// Runtime kullanımı (büyük/küçük harf duyarsız)
#{userId}   #{USERID}   #{UserId}   #{userid}
3. Script Hatalarını Kontrol Edin:
// Hata kontrolü ekleyin
try {
    customVariableMap.put("userId", extractUserId())
} catch (Exception e) {
    logger.error("Error creating userId variable", e)
    // Varsayılan değer
    customVariableMap.put("userId", "unknown")
}

Sorun 2: Variable Değeri Yanlış

Belirtiler:
  • Variable çözümleniyor ama yanlış değer gösteriyor
  • Eski değer gösteriliyor
Nedenler:
  1. Variable override edilmiş
  2. Script birden fazla kez çalışmış
  3. Yanlış policy’de variable oluşturulmuş
Çözümler: 1. Variable Override Kontrolü:
// Mevcut değeri kontrol et
String existingValue = customVariableMap.get("userId")
if (existingValue == null) {
    // Sadece yoksa oluştur
    customVariableMap.put("userId", newValue)
} else {
    logger.warn("userId already exists: ${existingValue}")
}
2. Script Execution Order Kontrolü: Policy execution order’ı kontrol edin. Aynı variable’ı birden fazla script oluşturuyorsa, son çalışan script’in değeri kullanılır.

Sorun 3: Script Çalışmıyor

Belirtiler:
  • Variable oluşturulmuyor
  • Script hata veriyor
Çözümler: 1. Script Syntax Kontrolü:
// Groovy syntax kontrolü
def jsonBody = new groovy.json.JsonSlurper().parseText(bodyTextFC)
2. Null Kontrolü:
// Güvenli kullanım
if (bodyTextFC != null && !bodyTextFC.isEmpty()) {
    try {
        def jsonBody = new groovy.json.JsonSlurper().parseText(bodyTextFC)
        if (jsonBody.userId) {
            customVariableMap.put("userId", jsonBody.userId.toString())
        }
    } catch (Exception e) {
        logger.error("Error parsing JSON", e)
    }
}
3. Hata Yakalama:
try {
    // Variable oluşturma kodu
    customVariableMap.put("userId", extractUserId())
} catch (Exception e) {
    logger.error("Error in script", e)
    // Varsayılan değer veya hata durumu
    customVariableMap.put("scriptError", "true")
}

İpuçları ve En İyi Uygulamalar

1. İsimlendirme Kuralları

İyi İsimler:
customVariableMap.put("userId", "123")
customVariableMap.put("userEmail", "[email protected]")
customVariableMap.put("tenantId", "tenant-123")
customVariableMap.put("requestId", "req-456")
Kötü İsimler:
customVariableMap.put("x", "123")  // Anlamsız
customVariableMap.put("data", "value")  // Çok genel
customVariableMap.put("request.method", "POST")  // Context variable ile çakışma
Kurallar:
  • Açıklayıcı ve anlamlı isimler kullanın
  • camelCase kullanın (örn: userId, userEmail)
  • Context variable isimleriyle çakışmayın
  • Kısa ama açıklayıcı isimler tercih edin

2. Null ve Empty Kontrolü

Güvenli Kullanım:
// Script içinde
String userId = customVariableMap.get("userId")
if (userId != null && !userId.isEmpty()) {
    // Kullan
    logger.info("User ID: ${userId}")
} else {
    logger.warn("User ID not found")
    // Varsayılan değer
    customVariableMap.put("userId", "guest")
}
Güvensiz Kullanım:
// Null pointer exception riski
String userId = customVariableMap.get("userId")
logger.info("User ID: ${userId.toUpperCase()}")  // userId null ise hata!

3. Güvenlik

Güvenli:
// Sadece gerekli ve güvenli bilgileri kaydet
customVariableMap.put("userId", userId)
customVariableMap.put("userEmail", userEmail)
Güvensiz:
// Hassas bilgileri kaydetme
customVariableMap.put("password", userPassword)  // Log'da görünebilir!
customVariableMap.put("creditCard", cardNumber)  // Güvenlik riski!
customVariableMap.put("apiSecret", secretKey)    // Hassas bilgi!
Güvenlik Kuralları:
  • Şifreleri global variable’a kaydetmeyin
  • Kredi kartı bilgilerini kaydetmeyin
  • API secret key’leri kaydetmeyin
  • Sadece gerekli ve güvenli bilgileri kaydedin

4. Hata Yönetimi

İyi Hata Yönetimi:
try {
    if (bodyTextFC != null && !bodyTextFC.isEmpty()) {
        def jsonBody = new groovy.json.JsonSlurper().parseText(bodyTextFC)
        if (jsonBody.userId) {
            customVariableMap.put("userId", jsonBody.userId.toString())
        }
    }
} catch (Exception e) {
    logger.error("Error parsing JSON body", e)
    // Varsayılan değer veya hata durumu
    customVariableMap.put("userId", "unknown")
    customVariableMap.put("parseError", "true")
}
Kötü Hata Yönetimi:
// Hata kontrolü yok
def jsonBody = new groovy.json.JsonSlurper().parseText(bodyTextFC)
customVariableMap.put("userId", jsonBody.userId.toString())  // Null pointer riski!

5. UI’da Context Variable Kullanımı

Birçok policy ve ayar ekranında Context Variable Dialog butonu bulunur:
1

Context Variable Dialog'u Açın

Policy veya ayar ekranında “Variable” butonuna tıklayın (breadcrumb’ta veya alan yanında).
2

Değişkeni Seçin

Açılan dialog’da kullanılabilir tüm değişkenleri görüntüleyin.
3

Değişkeni Kopyalayın

İstediğiniz değişkene tıklayarak kopyalayın.
4

Değişkeni Yapıştırın

Değişkeni ilgili alana yapıştırın.
Dialog Kategorileri:
  • Error Variables (10 adet)
  • Request Variables (7 adet)
  • Message Variables (Dinamik)
  • API Variables (2 adet)
  • DateTime Variables (8 adet)

Özet

Hızlı Referans

Context Variable Runtime Kullanımı:
#{request.method}        → HTTP metodu
#{dateTime.formattedText} → Formatlanmış tarih/saat
#{message.correlationId} → İstek ID'si
#{apiProxy.name}         → API Proxy adı
#{error.message}         → Hata mesajı
Context Variable Script Kullanımı:
request_httpMethod       → HTTP metodu
dateTime_formattedText   → Formatlanmış tarih/saat
message_correlationId   → İstek ID'si
apiProxy_name            → API Proxy adı
error_message            → Hata mesajı
Global Variable Oluşturma:
// Script içinde
customVariableMap.put("variableName", "value")
Global Variable Kullanımı:
#{variableName}
Önemli Notlar:
  • Variable bulunamazsa boş string döner
  • Policy sırası önemlidir (önce oluştur, sonra kullan)
  • Context variable’lar otomatik oluşturulur, global variable’lar için önce Variable tanımı gerekir
  • Runtime’da #{category.property} formatı kullanılır, script’te category_property formatı kullanılır