Ana içeriğe geç

Rate Limit Kontrol Listesi

Bu politika ile her API ve endpoint için aşağıdaki ayarlar yapılabilir:

  • İzin Verilen Mesaj Sayısı (Permitted Message Count): Belirtilen zaman aralığında izin verilen maksimum istek sayısı.
  • Zaman Aralığı Süresi (Time Interval Period Length): Zaman aralığının uzunluğu.
  • Zaman Aralığı (Time Interval): Zaman aralığının birimi (saniye, dakika, saat, gün, ay).

Rate limit kontrolü şu şekilde çalışır:

Kimlik Belirleme

İstek geldiğinde, isteğin kimliği seçilen kimlik kaynağına göre belirlenir: ya seçtiğiniz bir değişkenin değeri (örn. IP adresi, kullanıcı veya API anahtarı) ya da kimlik doğrulama sonucunda elde edilen kullanıcı bilgisi kullanılır.

Hedef Kitle Kontrolü

Belirlenen kimliğin hedef kitlede olup olmadığı denetlenir. Kimlik, hedef kimlik bilgileri listesinde yer alıyorsa veya hedef kitle koşullarından herhangi biriyle (VEYA mantığı) eşleşiyorsa hedef kitleye dahildir.

Rate Limit Kontrolü

Kimlik hedef kitledeyse, ilgili API ve endpoint için tanımlı limit kontrol edilir.

Hedef Dışı Eylem

Kimlik hedef kitlede değilse, hedef-dışı eylem uygulanır: istek ya engellenir ya da hedef-dışı istekler için tanımlanan genel kota (tüm hedef-dışı istekler için tek ortak kota veya her kimlik için ayrı kota) devreye girer.

Karar Verme

İlgili limit aşılmışsa istek reddedilir, aşılmamışsa işleme devam edilir.

Yanıt ve İstatistikler

İsteğe yanıt verilirken, eğer yapılandırıldıysa, rate limit istatistikleri yanıt başlıklarına eklenir.

Bu yapılandırma, API'lerinizi aşırı kullanıma karşı korumak ve farklı kullanıcılar için farklı kullanım limitleri belirlemek için güçlü bir mekanizma sağlar.

Rate Limit kontrol listesi sayfası ayarlarını içeren görsele aşağıda yer verilmiştir:

Rate Limit Kontrol Listesi — Definition sekmesi Rate Limit Kontrol Listesi — Hedef-dışı Eylem ve Genel kota Rate Limit Kontrol Listesi — Hedef Kitle sekmesi

Rate limit konfigürasyonu için kullanılan alanlar aşağıdaki tabloda görülmektedir.

AlanAçıklama
İsim
Konfigürasyonun kullanımını ve yönetimini kolaylaştırmak için isim yazılabilir. Konfigürasyon yönetimi ve seçimi sırasında bu isme ihtiyacınız olacaktır.
Açıklama
Konfigürasyonun kullanımını ve yönetimini kolaylaştırmak için açıklama yazılabilir.
Kimlik Kaynağı
(Identity Source)
Rate limit'in hangi kimliğe göre uygulanacağını belirler. Değişken seçimi seçildiğinde kimlik, sizin belirlediğiniz bir değişkenin değerinden (örn. IP adresi, kullanıcı veya API anahtarı) alınır. Kimlik doğrulamadan gelen kullanıcı seçildiğinde ise kimlik, kimlik doğrulama sonucunda elde edilen kullanıcı bilgisinden alınır; bu seçenek için ilgili API'de en sonda çalışan bir kimlik doğrulama politikası bulunmalıdır.
İşletme Sırası
(Execution Order)
Rate limit kontrolünün istek işleme akışında ne zaman çalışacağını belirler. Altı konumdan biri seçilebilir: proxy grubu, API proxy ve API metod politikalarının her birinin öncesi ya da sonrası. Varsayılan konum API proxy politikalarından öncedir; böylece kimliği istek başlığından okuyan bir kontrol, o başlığı işleyen (örneğin temizleyen) bir kimlik doğrulama politikasından önce çalışabilir. Kimlik kaynağı Kimlik doğrulamadan gelen kullanıcı seçildiğinde, kimlik yalnızca kimlik doğrulamadan sonra güvenilir olduğundan konum otomatik olarak API metod politikalarından sonraya ayarlanır ve değiştirilemez. Seçilen konum bir kimlik doğrulama politikasından önce çalışıyorsa, kimliğin çözümlenememe olasılığına karşı bir uyarı gösterilir.
Periyot Tipi
(Interval Window Type)
Rate limit hesaplamasında kullanılacak zaman aralığının türünü belirler. FIXED veya SLIDING değerlerini alabilir. FIXED seçildiğinde, belirli bir süre içinde (örn. her saat başı) sabit bir sayıda istek kabul edilir. SLIDING seçildiğinde, son belirli süre içindeki (örn. son 1 saat) istek sayısı dikkate alınır.
Cache Bağlantısı Zaman Aşım Süresi (saniye)
(Cache Connection Timeout (second))
Cache servisine bağlanırken beklenecek maksimum süreyi saniye cinsinden belirler.
Cache Bağlantı Hatası Eylemi
(Action for Cache Connection Error)
Cache servisine bağlantı sırasında hata oluştuğunda yapılacak işlemi belirler. FAIL seçildiğinde bağlantı hatası durumunda istek reddedilir, CONTINUE seçildiğinde ise istek işlenmeye devam eder.
Rate Limit İstatistiklerini Response Header'da Göster
(Show Rate Limit Statistics in Response Header)
Rate limit bilgilerinin yanıt başlıklarında gösterilip gösterilmeyeceğini belirler. TRUE olarak ayarlandığında, yanıt başlıklarında kalan istek sayısı, limit değeri ve limitin yenileneceği süre gibi bilgiler eklenir (RateLimit-Remaining, RateLimit-Limit, RateLimit-Reset, X-RateLimit-Identity, X-RateLimit-Type başlıkları).
Uygulanan alan
(Apply by Variable)
Rate limit uygulanacak kullanıcı veya istemciyi tanımlamak için kullanılacak değişkeni belirler. Bu, örneğin IP adresi, kullanıcı kimliği veya API anahtarı olabilir. Yalnızca kimlik kaynağı Değişken seçimi iken görünür. Seçilen değişken kimlik doğrulama ile elde edilen bir kimliğe dayanıyorsa, ilgili kimlik doğrulama politikasının bu kontrolden önce çalışması gerektiğine dair bir uyarı gösterilir.
Hedef Kitle
(Target Audience)
Rate limit'in uygulanacağı kimlikleri belirleyen koşulların listesidir. Her koşul bir operatör (eşittir, içerir, ile başlar, ile biter, listede yer alır vb.) ve bir değerden oluşur. Koşullar VEYA mantığıyla değerlendirilir; kimlik, koşullardan herhangi biriyle eşleşirse hedef kitleye dahil edilir.
Hedef Kimlik Bilgileri
(Target Credentials)
Rate limit uygulanacak spesifik kimlik değerlerinin listesidir. Bu listede bulunan kimlik değerleri için rate limit uygulanır.
Hedef-dışı Eylem
(Out-of-target Action)
Kimliği hedef kitlede yer almayan isteklere ne yapılacağını belirler. Akışı durdur seçildiğinde bu istekler engellenir. Genel kota uygula seçildiğinde ise hedef-dışı istekler için ayrı bir genel kota uygulanır.
Kota Modu ve Genel Kota Limitleri
(Quota Mode)
Yalnızca hedef-dışı eylem Genel kota uygula iken kullanılır. Tüm hedef-dışı için tek ortak kota seçildiğinde tüm hedef-dışı istekler tek bir ortak limiti paylaşır; Her hedef-dışı kimlik için ayrı kota seçildiğinde her hedef-dışı kimlik kendi limitine sahip olur. Genel kota için izin verilen mesaj sayısı, zaman miktarı ve zaman birimi bu bölümde tanımlanır.
API'ler ve Endpoint'ler
(APIs and Endpoints)
Rate limit politikasının uygulanacağı API'ler ve endpoint'lerin listesidir.

Hata Mesajı Özelleştirme

RLCL politikasında, hız limiti aşıldığında veya kimlik hedef listede olmadığında gönderilen hata yanıtları tam olarak özelleştirilebilir.

Özelleştirilebilecek hata tipleri:

  • Hız limiti aşıldığında (429 Too Many Requests)
  • Kimlik çözümlenemediğinde
  • Kimlik hedef kitlede olmadığında

Her hata türü için şunlar tanımlanabilir:

  • HTTP durum kodu (örn. 429, 403, 400)
  • Hata kodu (iş mantığınıza göre tanımlanan kod)
  • Hata mesajı (genellikle kısa bir statü satırı)
  • Özel mesaj şablonu (isteğe bağlı; değişken içerebilen tam JSON veya XML yanıt gövdesi)
Öncelik Kuralı

Bir hatanın kendi özel mesaj şablonu varsa, o kullanılır. Yoksa plan genelindeki şablon devreye girer. O da yoksa sistemin varsayılan mesajı döndürülür. Yani özel tanım, daha genel tanımı geçersiz kılar. Bu davranış Apinizer'daki diğer politikalarla aynıdır.

Şablonda Kullanılabilir Değişkenler:

Özel mesaj şablonunda; hata bilgileri (hem sistemin varsayılan hem de özelleştirilmiş hata kodu, hata mesajı ve HTTP durum kodu), istek bilgileri (HTTP yöntemi, istek yolu, istemci adresi, sorgu dizesi), ilişki kimliği, API bilgileri ve tarih/saat değerleri kullanılabilir. Tüm değişkenlerin tam listesi, düzenleme ekranındaki Kullanılabilir Değişkenler panelinden kopyalanabilir.

Şablon örneği (JSON):

{
"errorCode": "#{error.defaultErrorCode}",
"message": "#{error.defaultMessage}",
"httpStatusCode": #{error.defaultHttpStatusCode}
}