Ayarlar Sekmesi (Settings Tab)
API Proxy için CORS, Cache, Hata Mesaj Şablonları, İletilen IP Başlık Parametreleri ve Log ayarlarının yapıldığı bölümdür.
Ayarlar sekmesini içeren görsele aşağıda yer verilmiştir:
Eğer ayarların üzerinde aşağıdaki görselde yer alan "Proxy Grup Ayarları Aktif" şeklinde bir uyarı yer alıyor ise bu API Proxy'nin bir API Proxy Gruba bağlı olduğunu ve bu paneldeki ayarların API Proxy Grup içerisinden yönetildiğini ifade eder.
Eğer ayarların üzerinde aşağıdaki görselde yer alan "Global Setting aktif" şeklinde bir uyarı yer alıyor ise bu API Proxy'nin bir Global Settings ayarına bağlı olduğunu ve bu paneldeki ayarların API Proxy Settings içerisinden yönetildiğini ifade eder.
CORS Ayarları
CORS (Cross-Origin Resource Sharing) ayarlarının yapıldığı bölümdür.
Bu alan aktifleştirildiğinde Yapılandır (Configure) butonu aktif olur ve ilgili ayarları içeren ekranın açılmasını sağlar.
CORS Ayarlarını Yapılandırma ekranına ait görsele aşağıda yer verilmiştir:
CORS Ayarları konfigürasyonu için kullanılan alanlar aşağıdaki tabloda görülmektedir.
Alan | Açıklama | |
---|---|---|
İstek Başlıkları (Request Headers) | Origin | Preflight isteğin gönderildiği orijin (domain, protocol, port) bilgisi yer alır. |
Access-Control-Request-Method | Preflight isteği ile asıl istekte gönderilecek olan HTTP metodu belirtilir. | |
Access-Control-Request-Headers | Preflight isteği ile asıl istekte gönderilecek olan HTTP başlıkları belirtilir. | |
Access-Control-Max-Age | Preflight isteğine ait cevabın başka bir preflight isteği göndermeden ne kadar süre önbellekte kalacağı saniye olarak verilir. | |
Access-Control-Allow-Headers | API Proxy'nin erişim için izin verdiği başlık değerleri girilir. Eğer preflight istekte Access-Control-Request-Headers belirtilmiş ise cevap üzerinde bu başlık yer alır. Asıl istekte hangi HTTP başlıklarının kullanılabileceği bilgisini içerir. | |
Access-Control-Allow-Methods | Sunucuya erişim gerçekleştirilirken izin verilen HTTP metodu veya metotları yer alır. API Proxy'nin erişim için izin verdiği metotlar listeden işaretlenerek seçilir:
| |
Yanıt Başlıkları (Response Headers) | Access-Control-Allow-Origin | API Proxy'nin izin verdiği orijin değerleri girilir. Eğer bu alana * değeri girilirse tüm orijinler istek gönderebilir. |
Access-Control-Allow-Credentials | Asıl istekte kimlik bilgilerinin olup olmadığı değeri girilir. | |
Access-Control-Expose-Headers | İstemcilerin erişebileceği diğer başlıklar girilir. |
Ön tanımlı mevcut olan Orijin ve Başlık değerlerine yenilerine eklemek için CORS Orijin Değerleri ve CORS Başlıkları sayfalarını ziyaret edebilirsiniz.
Önbellek Ayarları
API Proxy'den dönen yanıtlar ön belleğe alınarak istemciden gelen istekler Backend API'ye gönderilmeden önbellekten yanıtlanabilir. Buna ilişkin ayarların yönetildiği bölümdür.
Önbellek Ayarlarını Yapılandırma ekranına ait görsele aşağıda yer verilmiştir:
Önbellek Ayarları konfigürasyonu için kullanılan alanlar aşağıdaki tabloda görülmektedir.
Alan | Açıklama | |
---|---|---|
Sadece HTTP Get İsteklerini Önbelleğe Al (Cache Only HTTP Get Requests) | Bu seçenek aktifleştirilirse yalnızca HTTP Get isteklerinin yanıtları önbelleğe alınır. | |
Önbellek Anahtar Tipi (Cache Key Type) | Önbellek Anahtar Tipi için iki seçenek vardır:
Örneğin sorgu parametresi /metodAdı?param1=value1¶m2=value2 şeklinde olduğunda önbellekte tutulacak anahtar "param1=value1¶m2=value2" değerinden oluşur, ve bir daha istek bu şekilde geldiğinde önbellekteki sonuç döner.
Bu değer seçildiğinde "Değişken Listesi" tablosunda belirtilecek alanlar ile anahtar oluşturulur. | |
Değişken Listesi (Variable List) | Önbellek Key Tipi olarak "Özel Anahtar Oluştur (Create Custom Key) "seçilirse bu alan aktifleşir. Bu seçenek ile oluşturulacak olan önbellek anahtarının istek mesajının başlık, parametre veya gövde bölümlerinden belirtilecek alanların kombinasyonu ile yapılması sağlanır. Örneğin; "İstek mesajının başlığındaki APIKEY değeri ve gövdesindeki "//identity_no" XPath değerine göre anahtar oluştur" şeklinde ifade yazılabilir. | |
Kapasite (Capacity) | Önbellekte saklanabilecek maksimum yanıt sayısıdır. | |
Önbellek Geçersizleme İçin Yetki Gerekir (Invalidation Requires Authn) | Header'da Cache-Control anahtarına "no-cache", "no-store" veya "max-age=0" değerlerinden biri gönderilerek, mevcut önbellek geçersiz hale getirilebilir. Önbelleği geçersiz kılmak için yetkilendirme gerekiyorsa bu alan seçilir. | |
Yetkisiz İsteklerin Ele Alınması (Handling Action) | Önbelleği geçersiz kılmak için yetkilendirme gerekiyorsa yetkisiz istekler için yapılacak işlem seçilir:
| |
TTL | Önbelleğe alınan yanıtın geçerli olacağı süre saniye olarak girilir. | |
Null/Boş Değerleri Önbelleğe Al (Cache Null Value) | Boş değerlerin de önbelleğe alınması isteniyorsa işaretlenir. |
XML Hata Yanıt Şablonunu Özelleştirme
API Proxy'den istemciye herhangi bir hata döndürüleceği zaman kullanılacak olan yanıt şablonlarının hazırlanması için kullanılır.
Herhangi bir şablon aktifleştirildiğinde varsayılan şablon görüntülenir ve istenirse özelleştirilebilir.
Bu alan aktifleştirildiğinde Yapılandır (Configure) butonu aktif olur ve ilgili ayarları içeren ekranın açılmasını sağlar.
XML Hata Yanıt Şablonu Ayarlarını Yapılandırma ekranına ait görsele aşağıda yer verilmiştir:
XML Hata Yanıt Şablonu Ayarları konfigürasyonu için kullanılan alanlar aşağıdaki tabloda görülmektedir.
Alan | Açıklama |
---|---|
Yanıt Mesajında Özel Karakterlere İzin Ver (Permit Special Chars in Response Message) | Yanıtın hata mesajının içinde bulunabilecek özel karakterler XML mesaj yapısını bozabilir. Bunlara izin verilip verilmeyeceğini belirler. |
XML | XML tipindeki hata şablonu bu alanda düzenlenebilir. |
İçerik Tipi (Content Type) | Döndürülecek yanıtın içerik tipidir. |
JSON Hata Yanıt Şablonunu Özelleştirme
Aktifleştirildiğinde, istemci, döndürülen hatayı verilen JSON yanıt şablonunda görüntüler.
Bu alan aktifleştirildiğinde Yapılandır (Configure) butonu aktif olur ve ilgili ayarları içeren ekranın açılmasını sağlar.
JSON Hata Yanıt Şablonu Ayarlarını Yapılandırma ekranına ait görsele aşağıda yer verilmiştir:
JSON Hata Yanıt Şablonu Ayarları konfigürasyonu için kullanılan alanlar aşağıdaki tabloda görülmektedir.
Alan | Açıklama |
---|---|
Yanıt Mesajında Özel Karakterlere İzin Ver (Permit Special Chars in Response Message) | Yanıtın hata mesajının içinde bulunabilecek özel karakterler JSON mesaj yapısını bozabilir. Bunlara izin verilip verilmeyeceğini belirler. |
JSON | JSON tipindeki hata şablonu bu alanda düzenlenebilir. |
İçerik Tipi (Content Type) | Döndürülecek yanıtın içerik tipidir. |
Yanıt şablonlarının içerisinde #...# şeklindeki değerler, hata mesajının ilgili kısmının koyulacağı yer tutucular (placeholders) olarak kullanılır. Yer tutucular ve açıklamaları aşağıdaki tabloda görülmektedir.
Yer tutucu | Açıklama |
---|---|
#CORRELATIONID# | Apinizer, gelen her istek için biricik (unique) bir anahtar oluşturarak isteğin akış boyunca izlenebilmesini sağlar. Bu anahtarı kullanılarak örneğin uygulamaların log kayıtları ile Apinizer üzerindeki log kayıtlarının ilişkilendirilerek takip edilmesi mümkün hale gelir. |
#FAULTCODE# | İstemciye döndürülecek hata kodunun yanıt mesajı içinde koyulacağı yeri belirler. |
#FAULTMESSAGE# | İstemciye döndürülecek hata iletisinin yanıt mesajı içinde koyulacağı yeri belirler. |
#FAULTMESSAGE_FIRSTLINE# | İstemciye döndürülecek hata iletisinin ilk satırı veya ilk 150 karakteri alınarak, yanıt mesajı içine koyulur. |
#FAULTSTATUSCODE# | İstemciye döndürülecek HTTP Durum Kodunun yanıt mesajı içinde koyulacağı yeri belirler. |
#RESPONSEFROMAPI# | Backend API'den dönen bir yanıt varsa, bu yanıtın istemciye döndürülecek yanıt mesajı içinde koyulacağı yeri belirler. |
#RESPONSEFROMAPI_FIRSTLINE# | Backend API'den dönen bir yanıtın ilk satırı veya ilk 150 karakteri alınarak, istemciye döndürülecek yanıt mesajı içine koyulur. |
İstenirse her iki şablon da aktifleştirilebilir. Her iki şablon da aktifse hangisinin kullanılacağına şu kriterlere göre karar verilir:
- Content-Type başlığının içeriği JSON ise JSON Hata Yanıt Şablonu kullanılır.
- Content-Type başlığının içeriği boş ve API Proxy'nin tipi REST ise JSON Hata Yanıt Şablonu kullanılır.
- Bunların geçerli olmadığı durumda XML Hata Yanıt Şablonu kullanılır.
Eğer her iki şablon da aktifleştirilmemişse ya da hatanın nedeni API Proxy'nin bulunamamış olması ise (adres yanlış olabilir, API Proxy yüklenmemiş olabilir) bu durumda, text/plain;charset=utf-8 başlığı ile şu yanıt gövdesi döner:
[#CORRELATIONID#],[#FAULTCODE#],[#FAULTMESSAGE#],[#FAULTSTATUSCODE#],[#RESPONSEFROMAPI#]
Eğer API Proxy'nin Yönlendirme (Routing) sekmesinde, "Hedef API'den Hata Dönmesi Durumunda Yanıt Şablonunu Uygulama (Ignore Error Response Template In Case Of Error On Backend API)" seçeneği işaretlenmiş ise bu bölümde tanımlanmış olan şablonlar kullanılmaz, Backend API'nin hata yanıtı olduğu gibi istemciye gönderilir.
İletilen IP Başlık Ayarı
Eğer API Proxy bir Yük Dengeleyici (Load Balancer) ya da Vekil Sunucunun (Proxy Server) arkasındaysa, istemciden gelen istek API Proxy'e bu katman tarafından yönlendirileceği için istemcinin IP değeri API Proxy ya da Backend API tarafından bilinemez. Bu nedenle, Yük Dengeleyici ya da Vekil Sunucular, orijinal istemcinin IP değerini bir başlık ile iletebilirler. İletilen IP Başlık Parametreleri ayarı, yazılım/donanıma göre değişiklik gösterebilen bu başlığın adının belirtilerek istemci IP'sinin API Proxy ve Backend API tarafından erişilebilir olmasını sağlar.
İletilen IP Başlığı Ayarlarını Yapılandırma ekranına ait görsele aşağıda yer verilmiştir:
İletilen IP Başlığı Ayarları konfigürasyonu için kullanılan alanlar aşağıdaki tabloda görülmektedir.
Alan | Açıklama |
---|---|
İletilen IP Başlığı (Forwarded IP Header Parameter) | Eğer istemci bir Yük Dengeleyici ya da Geçit Sunucu arkasındaysa, bu parametre kullanılarak istemcinin gerçek IP numarasına ulaşılır. |
Kullanılacak IP (IP to Use) | İstek birden fazla vekilden geçmiş ise XFF değeri içinde birden fazla IP adresi birikebilir. Bu durumda hangi adresin alınacağına bu alan ile karar verilir. |
API Tanım Dosyasını Gizleme
Etkinleştirildiğinde, kullanıcıların API Proxy'nin dış erişim adresi üzerinden API Tanım dosyasına erişmesi engellenir. Fakat bu ayarın Yönetim Konsolu üzerinden gözüken tanım dosyaları için bir etkisi yoktur.
API Proxy bir Proxy Grup içinde ise ve Tanım Dosyası kapalı ise, Proxy Grup Tanım Dosyasında saklı olan API Proxy'nin tanım dosyası gözükmez, eğer Proxy Gruptaki tüm Proxy'lerin tanım dosyaları kapalı ise kullanıcı erişim hatası alır.
API Proxy Tanım dosyalarına erişim için Genel Bilgi Sekmesi sayfasını ziyaret edebilirsiniz.
API Trafik Log Ayarlarını Konfigure Etme
API Proxy'e gelen istek ve dönen yanıt mesajları API Proxy'nin yüklendiği ortamdaki API Proxy Trafik Log Konnektörlerine gönderilerek loglanır.
Log kayıtları iki tip veri içerir:
- Bunlardan ilki metrik verilerdir. Metrik verilerin saklanması isteğe bağlı değildir.
- İkincisi ise; İstemci → API Proxy, API Proxy → Backend API, Backend API → API Proxy, API Proxy → İstemci sırası ile iletilen istek ve yanıt mesajlarının, bu 4 bölgedeki içeriklerini oluşturan başlık (header), parametre (parameter) ve gövde (body) alanlarından oluşan kayıtlardır. Bu alanlardan hangilerinin log kayıtlarında bulunacağı ihtiyaca göre ya da log sunucusunun kaynak tüketimi baz alınarak belirlenebilir
Varsayılan olarak projenin tüm mesaj bölgelerindeki log alanları aktiftir.
Varsayılan olarak tüm log alanlarının aktif gelmesine rağmen, özellikle Üretim (Production) Ortamlarında log verisinin aşırı büyümemesi için Body alanlarının pasife alınması tercih edilebilir.
Log Ayarları konfigürasyonunu içeren görsele aşağıda yer verilmiştir:
Log ayarları için kullanılan alanlar aşağıdaki tabloda görülmektedir.
Alan | Açıklama | |
---|---|---|
Başlık (Header) | İlgili bölgedeki mesajın Başlık alanındaki değerlerin loglanmasını sağlar. | |
Gövde (Body) | İlgili bölgedeki mesajın Gövde alanındaki değerin loglanmasını sağlar. | |
Parametre (Parameter) | İlgili bölgedeki mesajın Parametre alanındaki değerlerin loglanmasını sağlar. | |
Konnektörler | İlgili logların hangi konnektöre gönderileceğini seçmek için kullanılır. |
Log Ayarları bölümünde, log ayarları API Proxy bazlı olarak yönetilir.
Log ayarları hakkında detaylı bilgi için API Proxy Log Ayarları (Geliştirici İçin) sayfasını ziyaret edebilirsiniz.