Genel Bakış
Apinizer’da politika ayarları, bağlantı konfigürasyonları ve routing adresleri gibi birçok string alanda dinamik değişkenler kullanılabilir. Bu sayede sabit değerler yerine ortama, isteğe veya çalışma zamanına göre değişen değerler tanımlanabilir. İki tür dinamik değişken vardır:Environment Variable — ${key}
Ortam değişkenleri, deploy anında çözümlenir. Geliştirme, test ve üretim gibi ortamlara göre farklı değerler alabilir.
Context Variable — #{key}
Bağlam değişkenleri, her istekte çözümlenir. İstek bilgileri, tarih/saat gibi sistem verileri veya script ile atanan özel değerler içerir.
İki Değişken Türü
| Özellik | Environment Variable (${key}) | Context Variable (#{key}) |
|---|---|---|
| Format | ${variableName} | #{variableName} |
| Çözümleme Zamanı | Deploy anında | Her istekte |
| Değer Kaynağı | Environment Variable yönetim ekranından tanımlanır | Sistem otomatik oluşturur veya script ile atanır |
| Ortam Bağımlılığı | Evet — dev, test, prod için farklı değer | Hayır — istek bazlı |
| Tanım Gereksinimi | Environment Variable ekranında tanım gerekir | Sistem değişkenleri: gerekmez. Global değişkenler: Custom Variable tanımı gerekir |
| Tipik Kullanım | Host adları, base URL’ler, port’lar, bağlantı bilgileri | Kullanıcı bilgileri, istek detayları, tarih/saat, hata bilgileri |
| Değişkenlik | Deploy sonrası sabittir | Her istekte farklı olabilir |
Environment Variable (${key})
Environment Variable’lar, farklı ortamlarda (geliştirme, test, üretim) farklı değerler kullanmanızı sağlar. Deploy anında çözümlenir ve çalışma zamanında sabit kalır.
Örnek: ${api.hostname} → Geliştirmede localhost:8080, üretimde api.example.com
Environment Variable tanımlama ve yönetim hakkında detaylı bilgi için Environment Variable sayfasına bakabilirsiniz. CRUD işlemleri ve kullanım senaryoları için Environment Variable Yönetimi sayfasını inceleyebilirsiniz.
Context Variable (#{key})
Context Variable’lar her istekte çözümlenir ve iki alt kategoriden oluşur:
1. Sistem Context Variable’ları — Otomatik oluşturulur, tanım gerektirmez:
#{context.request.httpMethod},#{context.request.uri},#{context.request.remoteAddress}#{context.system.year},#{context.system.dateTime}#{context.message.correlationId}#{context.apiProxy.name},#{context.apiProxy.id}#{context.credential.clientId},#{context.credential.username}#{error.defaultErrorCode},#{error.defaultMessage}
#{userId},#{tenantId},#{customValue}- Script politikasında
customVariableMap.put("key", "value")ile değer atanır
Variable tanımları hakkında detaylı bilgi için Değişkenler sayfasına bakabilirsiniz.
Karışık Kullanım
İki tür aynı anda kullanılabilir:${api.hostname} deploy anında çözümlenir (örn: api.example.com), #{userId} her istekte farklı değer alır.
Desteklenen Alanlar
Dinamik değişkenler, politika ve bağlantı ayarlarında neredeyse tüm string alanlarda kullanılabilir.Politikalar
| Politika | Desteklenen Alanlar | Değişken Türleri |
|---|---|---|
| REST API Call | URL, header, parametre, body | ${key} ve #{key} |
| OIDC | Token endpoint, introspection endpoint, resource endpoint, form parametreleri | ${key} ve #{key} |
| JOSE Validation / Implementation | Dynamic key HTTP endpoint | ${key} ve #{key} |
| Authentication API | URL, header, parametre | ${key} ve #{key} |
| Message Builder | Template, header, form alanları | ${key} ve #{key} |
| Redaction | Key-value listesi | ${key} ve #{key} |
| Diğer politikalar | Metin (string) giriş alanları | ${key} ve #{key} |
Bağlantılar
| Bağlantı Türü | Desteklenen Alanlar |
|---|---|
| Database Connection | Host, port, kullanıcı adı, şifre, connection string |
| LDAP Connection | URL, base DN, kullanıcı adı, şifre |
| Email Connection | Host, port, kullanıcı adı |
Diğer Alanlar
| Alan | Desteklenen Türler |
|---|---|
| Routing Adresi | ${key} ve #{key} |
| JSON Error Response Template | #{key} (hata değişkenleri dahil) |
| XML Error Response Template | #{key} (hata değişkenleri dahil) |
| Identity Provider (DB, LDAP, API) | ${key} ve #{key} |
| IP Group | ${key} ve #{key} |
| Credential | ${key} ve #{key} |
Bağlantı ayarlarında (Database, LDAP, Email) genellikle
${key} (Environment Variable) kullanılır çünkü bu değerler ortam bazlıdır ve deploy anında çözümlenmelidir. #{key} (Context Variable) ise istek zamanında çözümlenir ve daha çok politika ayarlarında ve routing adreslerinde kullanılır.UI’da Değişken Seçimi
Politika ve bağlantı düzenleme ekranlarında, breadcrumb alanında “Değişken” butonu bulunur. Bu butona tıklandığında açılan menüden iki diyaloğa erişilebilir:Environment Variable Diyaloğu
Menüden “Environment Variable” seçildiğinde açılan diyalog, tanımlanmış tüm ortam değişkenlerini listeler:- Global Değişkenler — Tüm ortamlarda geçerli olan değişkenler
- Ortama Özel Değişkenler — Belirli ortamlar için tanımlanmış değişkenler
${variableName} formatında panoya kopyalanır ve ilgili alana yapıştırılabilir.
Context Variable Diyaloğu
Menüden “Context Variable” seçildiğinde açılan diyalog, kullanılabilir tüm bağlam değişkenlerini kategorize ederek listeler:- Error Variables — Hata bilgileri
- Request Variables — İstek bilgileri
- Message Variables — Mesaj bilgileri
- API Variables — API Proxy bilgileri
- Credential Variables — Kimlik bilgileri
- DateTime Variables — Tarih/saat bilgileri
#{variableName} formatında panoya kopyalanır.
Her iki diyalog da bağımsızdır. Aynı alanda hem
${key} hem #{key} kullanabilirsiniz.Context Variable Referansı
Request (İstek)
| Format | Açıklama | Örnek Değer |
|---|---|---|
#{context.request.httpMethod} | HTTP metodu | GET, POST |
#{context.request.uri} | İstek URI’si | /api/users/123 |
#{context.request.contentType} | İçerik tipi | application/json |
#{context.request.remoteAddress} | İstemci IP adresi | 192.168.1.100 |
#{context.request.queryString} | Query parametreleri | ?id=123 |
#{context.request.pathInfo} | Path bilgisi | /api/users |
#{context.request.contextPath} | Context path | /apinizer |
DateTime (Tarih/Saat)
| Format | Açıklama | Örnek Değer |
|---|---|---|
#{context.system.year} | Yıl | 2026 |
#{context.system.month} | Ay (1-12) | 2 |
#{context.system.dayOfMonth} | Gün (1-31) | 4 |
#{context.system.dayOfWeek} | Haftanın günü (1=Pazartesi, 7=Pazar) | 3 |
#{context.system.hour} | Saat (0-23) | 14 |
#{context.system.minute} | Dakika (0-59) | 30 |
#{context.system.second} | Saniye (0-59) | 45 |
#{context.system.epochMillis} | Unix timestamp (milisaniye) | 1707058245000 |
#{context.system.dateTime} | Formatlanmış tarih/saat (UTC) | 2026-02-04T14:30:45.000Z |
#{context.system.date} | Formatlanmış tarih | 2026-02-04 |
#{context.system.time} | Formatlanmış saat | 14:30:45 |
Message (Mesaj)
| Format | Açıklama | Örnek Değer |
|---|---|---|
#{context.message.correlationId} | Benzersiz istek ID’si | abc123-def456-ghi789 |
API Proxy veya Proxy Group üzerinde tanımlanan özel message variable’lar da bu kategoride görüntülenir.
API
| Format | Açıklama | Örnek Değer |
|---|---|---|
#{context.apiProxy.id} | API Proxy ID’si | api-proxy-123 |
#{context.apiProxy.name} | API Proxy adı | User Management API |
Credential (Kimlik)
| Format | Açıklama | Örnek Değer |
|---|---|---|
#{context.credential.clientId} | Kimlik doğrulanmış credential key/username | my-app-key |
#{context.credential.username} | Credential kullanıcı adı | admin |
#{context.credential.email} | Credential e-posta | admin@example.com |
#{context.credential.fullName} | Credential tam adı | Ahmet Yılmaz |
Error (Hata)
| Format | Açıklama | Örnek Değer |
|---|---|---|
#{error.customizedErrorCode} | Özelleştirilmiş hata kodu | CUSTOM_001 |
#{error.customizedHttpCode} | Özelleştirilmiş HTTP kodu | 400 |
#{error.customizedMessage} | Özelleştirilmiş mesaj | Lütfen tekrar deneyin |
#{error.defaultErrorCode} | Varsayılan hata kodu | DEFAULT_001 |
#{error.defaultMessage} | Varsayılan mesaj | Bir hata oluştu |
#{error.defaultHttpCode} | Varsayılan HTTP kodu | 500 |
Script’te Kullanım Farkı
Context variable’lar script politikası içinde farklı formatta kullanılır. Runtime’da nokta (.) ile ayrılan format, script’te alt çizgi (_) ile yazılır:
| Runtime Format | Script Format |
|---|---|
#{context.request.httpMethod} | request_httpMethod |
#{context.system.year} | dateTime_year |
#{context.message.correlationId} | message_correlationId |
#{context.apiProxy.name} | apiProxy_name |
#{error.defaultErrorCode} | error_defaultErrorCode |
Global Variable Kullanımı
Global variable’lar, Custom Variable tanımı ile oluşturulan ve script ile değer atanan değişkenlerdir. Politikalar arasında veri aktarımı için kullanılır.Variable Tanımı Oluşturun
Project > Variables bölümünden Custom Variable tipinde yeni bir tanım oluşturun.
Script ile Değer Atayın
Script politikası içinde
customVariableMap.put("variableName", "value") ile değer atayın.Kullanım Örnekleri
Hata Yanıt Şablonu
Dinamik Routing
${api.hostname} deploy anında, #{tenantId} ve #{context.request.pathInfo} her istekte çözümlenir.
Response Header Ekleme
Davranış Kuralları
- Bulunamayan
#{key}değerleri boş string ("") ile değiştirilir; hata fırlatılmaz, uyarı log’u yazılır - Bulunamayan
${key}değerleri çözümlenemez ve olduğu gibi kalır - Script politikasında custom variable map’e doğrudan erişim olduğu için
#{...}placeholder mekanizması kullanılmaz - Variable isimleri büyük/küçük harf duyarsızdır
Sonraki Adımlar
Environment Variable
Ortam değişkenlerini detaylı öğrenin
Değişkenler
Variable tanımlarını öğrenin
Script Politikası
Script ile değişken kullanımı
Environment Variable Yönetimi
Environment Variable CRUD işlemleri

