Kısıtlama nedir?

Azaltma, bulut API'lerinin belirli bir süre içinde yapılabilecek istek sayısını sınırlamak için kullandığı bir tekniktir. Kısıtlama, API'nin kullanılabilir durumda kalmasını ve tüm kullanıcılara yanıt vermeye devam etmesini sağlar. Ayrıca tek bir kullanıcının çok fazla kaynak tüketmesini engeller.

Çeşitli şekillerde kısıtlama ile karşılaşabilirsiniz. Yaygın yollardan biri HTTP durum kodlarını kullanmaktır. Örneğin, izin verilen istek sayısını aştığınızda API bir 429 Too Many Requests durum kodu döndürebilir. Bu yanıt, belirli bir süre içinde çok fazla istekte bulunduğunuzu ve yavaşlamanız gerektiğini belirtir. Her API bunu kullanmaz429: GitHub da 403 ile yanıt verebilir ve API'sinin tamamı aşırı yüklendiğinde Anthropic 529 kullanır.

Durum kodlarına ek olarak, bazı API'ler yanıt üst bilgilerinde veya gövdesinde daha fazla bilgi sağlar. Örneğin, başka bir istekte bulunmadan önce ne kadar beklemeniz gerektiğini belirtmek için Retry-After başlığını kullanabilirler.

Kullandığınız API'lerin hız sınırlama limitlerinin farkında olmanız ve API yoğun yük altındayken yanıt vermelerini ve güvenilir kalmalarını sağlamak için uygulamalarınızda hız sınırlamanın nasıl ele alınacağını bilmeniz gerekir.

Kısıtlama uygulamanızı nasıl etkiler?

Bir API uygulamanızı kısıtladığında ve uygulama bunu işlemediğinde, uygulama kilitlenir, genel bir hata gösterir, kısıtlanmış kalacak kadar hızlı yeniden denenir veya verileri sessizce kaybeder. Geliştirme sırasında bunların pek azını görürsünüz, çünkü API hızlıdır, tek kullanıcı sizsiniz ve test verileriniz küçüktür.

Uygulamanızın kısıtlamayı işlediğini test etme

Approach Bulduklarınız Kaçırdıklarınız
Üretimi bekle Gerçek kısıtlama Her şey, bir kullanıcı ona basana kadar
Testlerinizde API'yi mock'layın veya kodlama asistanınızın mock'u yazmasına izin verin Yeniden deneme iş akışı dalınızın çalışıp çalışmadığı API'nin gerçek durum kodları, Retry-After üst bilgileri, hata gövdeleri ve SDK'nızın yeniden deneme ilkesi. Uygulamanızın mock nesneye erişmek için yalnızca teste özel bir anahtara da ihtiyacı vardır.
Sizi kısıtlayana kadar gerçek API'yi çağırın Gerçek davranış İsteğe bağlı olarak kısıtlamayı tetikleyemezsiniz ve gerçek kotanızı tüketirsiniz
Uygulamanızın gerçek trafiğini yakalama ve yavaşlatmayı simüle etme Gerçek URL'ler, gerçek SDK'nız ve yeniden deneme ilkeniz ve uygulamanızın Retry-After öğesinin belirttiği süre kadar bekleyip beklemediği Kodunuz izole halde. Bunun için birim testlerinizi saklayın.

Uygulamanızda deneyin

Dev Proxy, seçtiğiniz API'ler için kısıtlama yanıtları döndürürken uygulamanız gerçek URL'leri çağırmaya devam eder. Ayrıca, uygulamanız Retry-After süresi dolmadan önce API'yi yeniden çağırdığında da size bildirir.

Uygulamanızın çağırmış olduğu API için ön ayarı indirin ve bununla Geliştirme Proxy'sini başlatın:

devproxy config get microsoft-graph-rate-limiting
devproxy --config-file "~dataFolder/configs/microsoft-graph-rate-limiting/.devproxy/devproxyrc.json"
API Preset
Microsoft Graph (OneDrive ve SharePoint: /drive, /shares, /sites) microsoft-graph-rate-limiting
GitHub github-rate-limiting
OpenAI openai-throttling
Anthropic anthropic-throttling

Diğer tüm API'ler için bkz. Uygulamamın hız sınırlamayı doğru şekilde ele aldığını test etme. Geliştirme Proxy'sini yüklemek için bkz. Dev Proxy'yi ayarlama.

Sonraki Adımlar