Gaz Kelebeği (Throttle) ve Oran Sınırı (Rate Limit) | Bilinmesi Gereken Farklar

API kullanıcıları için akıcı deneyim. Aşırı yüklemeyi önleyerek, throttling ve rate limiting'in API'lerinizde nasıl uygulanacağını öğrenin!

Efe Demir

Efe Demir

5 June 2025

Gaz Kelebeği (Throttle) ve Oran Sınırı (Rate Limit) | Bilinmesi Gereken Farklar

API'ler, modern webimizin temel omurgasıdır ve farklı uygulamaların birbiriyle iletişim kurmasını ve veri alışverişinde bulunmasını sağlar. Her uygulamanın kendine özgü bir alanı varken, bazı kötü niyetli kişiler bu faydalı uygulamaları kötüye kullanma eğilimindedir, bu nedenle diğer kullanıcıların deneyimini olumsuz etkiler. Ancak, bunu önlemenin bir yolu olsaydı?

💡
Çoğu API aracının, onları kullanma konusunda sınırlamaları vardır - yapılması gereken sınırlı istekler, kurulması gereken sınırlı test senaryoları vb. Ancak, tüm bu kısıtlamaları aşan bir API aracı var.

Size, API'leri sınırsızca test etmenizi sağlayan Apidog, hepsi bir arada bir API geliştirme aracı sunuyoruz. Apidog'un tek kısıtlaması, üçüncü taraf API'lerin sahip olduğu kısıtlamadır (API'lerini kısıyor olsunlar ya da olmasınlar).

Apidog'u denemekle ilgileniyorsanız, aşağıdaki düğmeye tıklayarak bugün (veya gelecekte) ücretsiz başlayın! 👇 👇 👇
button

Kısıtlama ve oran sınırlaması arasındaki farkın ne olduğunu öğrenmek için, bunları ayrı ayrı tanımlayacağız.

Kısıtlama Nedir?

API'ler bağlamında, kısıtlama, API erişimini yönetmek ve API'nin aşırı yüklenmesini önlemek için dinamik bir yaklaşım olarak kabul edilir. Kısıtlama API'leri, API'nin kararlılığını ve performansını sağlamak için gelen istek akışını düzenler.

API Kısıtlama Temel Özellikleri

1. Dinamik Ayarlama:

2. Teknikler ve Algoritmalar:

3. Yapılandırma Seçenekleri:

4. Yanıt Mekanizmaları:

5. Gelişmiş Özellikler:

API Kısıtlama Kod Örneği

1. Gecikmeli basit API kısıtlaması (Python):

def handle_request(user_id):
  # Paylaşılan bir kaynak sayacını kontrol etmeyi simüle et
  if resource_counter > threshold:
    time.sleep(delay_time)  # Gecikme uygulayarak kısıtla
  # İstek mantığını burada işle...

2. API istekleri için jeton kovası kısıtlaması (Python)

from threading import Lock

class TokenBucket:
  """
  Oran sınırlaması için basit bir jeton kovası sınıfı.
  """
  def __init__(self, capacity, refill_rate):
    """
    Jeton kovasını belirli bir kapasite ve yeniden doldurma oranıyla başlat.

    Args:
      capacity (int): Kovada tutulabilecek maksimum jeton sayısı.
      refill_rate (float): Kovaya jeton eklenme oranı (saniyede jeton sayısı).
    """
    self.capacity = capacity
    self.refill_rate = refill_rate
    self.tokens = capacity  # Tam dolu bir kova ile başla
    self.last_refill_time = time.time()
    self.lock = Lock()

  def consume(self, amount):
    """
    Kovadan belirtilen sayıda jeton tüketmeye çalışır.

    Args:
      amount (int): Tüketilecek jeton sayısı.

    Returns:
      bool: Jetonlar başarıyla tüketildiyse True, aksi takdirde False.
    """
    with self.lock:
      self._refill()
      if self.tokens >= amount:
        self.tokens -= amount
        return True
      return False

  def _refill(self):
    """
    Kovayı, geçen süre ve yeniden doldurma oranına göre yeniden doldurur.
    """
    now = time.time()
    elapsed_time = now - self.last_refill_time
    self.tokens = min(self.capacity, self.tokens + (elapsed_time * self.refill_rate))
    self.last_refill_time = now

# Örnek kullanım
bucket = TokenBucket(capacity=5, refill_rate=1)  # 5 jeton, saniyede 1 jetonla yenilenir

def access_api():
  # API istek mantığını burada simüle et...
  print("API'ye erişiliyor...")

if bucket.consume(2):
  access_api()
else:
  print("İstek kısıtlandı, yeterli jeton yok!")

# Kısa bir gecikmeden sonra tekrar dene
time.sleep(1)

if bucket.consume(1):
  access_api()
else:
  print("İstek kısıtlandı, yeterli jeton yok!")

Kod açıklaması (adım adım):

  1. İlk olarak, jeton havuzunu yöneten bir TokenBucket sınıfı tanımlayın
  2. Kapasiteyi (maksimum jeton) ve yeniden doldurma oranını (saniyedeki jeton sayısı) argüman olarak alır.
  3. consume yöntemi, kovadan belirtilen sayıda jetonu kaldırmaya çalışır.
  4. Kovanın geçmiş zamana göre güncellendiğinden emin olmak için özel _refill yöntemini çağırır.
  5. Jetonlar yeterliyse, tüketilirler - yöntem True döndürür
  6. Aksi takdirde, yöntem False döndürür - kısıtlamayı gösterir.

Oran Sınırlaması Nedir?

API'ler bağlamında, oran sınırlaması, bir kullanıcının veya uygulamanın belirli bir süre içinde yapabileceği istek sayısına ilişkin bir dizi kısıtlamayı ifade eder. Bunu, popüler bir cazibe merkezindeki bir bilet gişesi gibi düşünün; burada dakika başına yalnızca belirli sayıda isteğe izin verilir.

API Oran Sınırlama Temel Özellikleri

1.Sınır Yapılandırması:

İstek Sınırları: API sağlayıcıları, bir kullanıcının veya uygulamanın belirli bir zaman penceresi içinde izin verilen maksimum istek sayısını tanımlar (örneğin, saatte 100 istek). Bu sınırlar, aşağıdaki gibi faktörlere dayalı olabilir:

Zaman Pencereleri: Sınırlar, tipik olarak saniye, dakika veya saat cinsinden belirli zaman dilimleri içinde uygulanır. Bu, sürekli aşırı yüklenmeyi önlerken kontrollü etkinlik patlamalarına izin verir.

2.Sayma Mekanizmaları:

Kullanıcı Kimliği: İstekler, kullanıcılar veya uygulamalarla ilişkilendirilir. Bu, aşağıdakiler aracılığıyla başarılabilir:

İstek Sayacı: API, geçerli zaman penceresi içinde her kullanıcı/uygulamadan alınan istek sayısını takip eder.

3. Uygulama Stratejileri:

4. Gelişmiş Özellikler:

5. İletişim ve İzleme:

API Oran Sınırlama Kod Örnekleri

1. Sınırları ve zaman pencerelerini izleme (Python):

# API belgelerinden alınan API oran sınırı bilgilerini depolamayı simüle et
rate_limit = 100  # Saat başına istek
time_window = 3600  # Bir saat içindeki saniye sayısı

last_request_time = None

def make_api_request():
  global last_request_time

  # Zaman penceresi içinde olup olmadığını ve yeterli istek kalıp kalmadığını kontrol et (varsayımsal)
  if last_request_time is None or (time.time() - last_request_time) >= time_window:
    # API isteğini yap
    last_request_time = time.time()
    # ... (API istek mantığı)
  else:
    print("API oran sınırına ulaşıldı, sıfırlanmasını bekleyin...")
    # Geri alma stratejisi uygulayın (bkz. 3. nokta)

# Örnek kullanım
make_api_request()

Yukarıdaki kod örneği, alınan oran sınırı bilgilerini (istekler ve zaman penceresi) depoladığınız ve son istek zamanını izlediğiniz bir durumu gösterir. Kod daha sonra, pencere içindeki kalan zamana ve izin verilen isteklere göre bir istek yapılıp yapılamayacağını kontrol eder.

2. API yanıt başlıklarını kullanma (Python):

import requests

def make_api_request():
  response = requests.get("https://api.example.com/data")
  if response.status_code == 429:  # Oran sınırı aşıldı kodu
    # Başlıklardan oran sınırı bilgilerini çıkar (X-RateLimit-Remaining, X-RateLimit-Reset)
    # Geri alma stratejisi uygulayın (bkz. 3. nokta)
  else:
    # Başarılı yanıtı işle
    # ...

Yukarıdaki kod örneği, yaygın bir oran sınırı hata kodu 429 için yanıt durum kodunu kontrol eder ve karşılaşıldığında yanıt başlıklarından ilgili bilgileri çıkarmaya çalışır.

Kısıtlama ve Oran Sınırlaması Arasındaki Özet Farklar

Özellik Kısıtlama Oran Sınırlaması
Hedef Performansı korumak için API trafik akışını yönetin Kötüye kullanımı ve aşırı yüklenmeyi önlemek için API erişimini kontrol edin
Mekanizma Trafiğe göre yanıt sürelerini dinamik olarak ayarlar Zaman penceresi başına istekler için katı bir sınır belirler
Uygulama Yoğun dönemlerde istekleri yavaşlatır (daha esnek) Sınırı aşan istekleri engeller (daha katı)
Odak Kararlılığı ve performansı korumak Adalet ve kötüye kullanımı önleme
Yapılandırma Eşik değerleri, zaman pencereleri, yanıt mekanizmaları Sınırlar ve zaman pencereleri
Kullanım Durumu Yoğun trafik sırasında aşırı yüklenmeyi önleme, acil istekleri önceliklendirme DoS saldırılarına karşı koruma, kullanımı kontrol etme

Apidog - Uygulamanızı Mükemmelleştirmek İçin Sınırsız İstek

En iyi API'leri oluşturmanızı engelleyen tek şey, araçlarınızın sınırlamalarıdır - günümüzdeki çoğu API aracının hepsi ödeme duvarlarına sahiptir. Ödeme yapmazsanız, API geliştirmesi için gerekli özelliklere sahip olamazsınız. Ancak, bir API geliştirme aracı, geliştiriciler için en iyi hizmetleri sağlamak için bir adım daha ileri gider.

apidog interface
button

Apidog, tüm API geliştirme sürecini tüm API yaşam döngüsü için kolaylaştıran, hepsi bir arada bir API geliştirme aracı ile tanışın. Apidog ile yeni API'ler oluşturabilir ve önceden var olan API'leri değiştirebilir, API'lerinizin kusursuz çalışmasını sağlamak için testler, sahteler ve belgeler gerçekleştirebilirsiniz.

Apidog ile API Oluşturma

Apidog ile API'leri kendiniz oluşturabilirsiniz. Bu, API'nizin kendi oran sınırını ayarlayabileceğiniz ve ek kodlama yardımıyla API'nizi kısıtlamak isteyip istemediğinize karar verebileceğiniz anlamına gelir.

new api apidog

Yukarıdaki resimde gösterildiği gibi, Yeni API düğmesine basarak başlayın.

add details new api apidog

Ardından, API'nin birçok özelliğini seçebilirsiniz. Bu sayfada şunları yapabilirsiniz:

Tasarım aşamasına ne kadar çok ayrıntı sağlayabilirseniz, bu makalenin sonraki bölümünde gösterildiği gibi API belgeleriniz o kadar açıklayıcı olacaktır.

Kullanıcıların API ile çalışmak için bu bilgiye ihtiyaç duyacağından, API'ye uygulanan herhangi bir oran sınırı olup olmadığını da eklediğinizden emin olun.

İlk kez bir API oluşturuyorsanız, API oluşturma konusunda biraz yardım sağlamak için bu makaleleri okumayı düşünebilirsiniz.

Bir istek yapmak için tüm temel gereklilikleri tamamladıktan sonra, Gönder'e tıklayarak bir istek yapmayı deneyebilirsiniz. Daha sonra, yukarıdaki resimde gösterildiği gibi, Apidog penceresinin alt kısmında bir yanıt almalısınız.

Basit ve sezgisel kullanıcı arayüzü, kullanıcıların istekten elde edilen yanıtı kolayca görmesini sağlar. Ayrıca, istemci ve sunucu taraflarındaki kodu eşleştirmeniz gerektiğinden, yanıtın yapısını anlamak da önemlidir.

Apidog ile Açıklayıcı API Belgeleri Oluşturun

Apidog ile, yazılım geliştiricilerin yalnızca birkaç tıklamayla ihtiyaç duyduğu her şeyi içeren API belgelerini hızlı bir şekilde oluşturabilirsiniz.

step by step process sharing api documentation apidog

Ok 1 - İlk olarak, Apidog uygulama penceresinin sol tarafındaki Paylaş düğmesine basın. Daha sonra, boş olması gereken "Paylaşılan Belgeler" sayfasını görebilmelisiniz.

Ok 2 - İlk Apidog API belgelerinizi oluşturmaya başlamak için Veri Yok altındaki + Yeni düğmesine basın.

Önemli API Belgeleme Özelliklerini Seçin ve Dahil Edin

input api details and select api doc properties apidog

Apidog, geliştiricilere API belgelerinizi kimlerin görüntüleyebileceği ve bir dosya parolası ayarlama gibi API belgeleme özelliklerini seçme seçeneği sunar, böylece yalnızca seçilen kişiler veya kuruluşlar görüntüleyebilir.

API Belgelerinizi Görüntüleyin veya Paylaşın

open share edit api documentation apidog

Apidog, API projenizin ayrıntılarını bir web sitesi URL'si aracılığıyla görüntülenebilen bir API belgesinde derler. Tek yapmanız gereken, başkalarının API belgelerinizi görüntüleyebilmesi için URL'yi dağıtmaktır!

Daha fazla ayrıntı gerekiyorsa, Apidog kullanarak API belgeleri oluşturma hakkında bu makaleyi okuyun:

Sonuç

Kısıtlama ve oran sınırlaması, API erişimini yönetmek ve sorunsuz çalışmayı sağlamak için her ikisi de temel araçlardır. Aşırı yüklenmeyi önleme ortak hedefini paylaşırken, yaklaşımları farklıdır.

Oran sınırlaması, bir zaman dilimi içinde istekler için katı bir sınır belirleyerek katı bir kapıcı gibi davranır. Bu, adalete öncelik verir ve kötüye kullanmayı önler. Öte yandan, kısıtlama, trafik akışına göre yanıt sürelerini dinamik olarak ayarlayarak bir karartma anahtarı gibi çalışır. Bu, isteklerdeki artışları zarif bir şekilde ele alarak kararlılığı ve performansı sağlar.

Her yaklaşımın güçlü yönlerini anlamak, API sağlayıcılarının, kullanıcı ihtiyaçlarını API'nin kapasitesiyle dengeleyen, herkes için güvenli ve performanslı bir deneyime yol açan sağlam bir erişim kontrol sistemi oluşturmasına olanak tanır.

Apidog ile sınırlı istekler konusunda endişelenmenize gerek yok. Ayrıca, anlamak ve analiz etmek istediğiniz API'leri içe aktarabilir ve bunları Apidog'un basit ama sezgisel tasarımını kullanarak analiz edebilirsiniz. API geliştirme yolculuğunuza bugün Apidog ile başlayın!

button

Explore more

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Yapay zeka hızla gelişiyor. FractalAIResearch/Fathom-R1-14B, 14.8 milyar parametreyle matematik ve genel akıl yürütmede başarılı.

5 June 2025

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code'u keşfedin: Kurumsal kullanıma özel, en özelleştirilebilir yapay zeka destekli kodlama asistanı.

5 June 2025

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code, 2025'te yapay zeka destekli kodlamayı nasıl devrimleştiriyor? Özelliklerini, kullanımını ve Windsurf kısıtlamalarından sonra neden popüler olduğunu öğrenin. Geliştiriciler için okunması gereken!

5 June 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin