Aracılığıyla paylaş


Hız Sınırı API yanıtlarının benzetimini yapın

Bir bakışta
Hedef: Herhangi bir API'de hız sınırlama davranışını simüle etme
Süre: 10 dakika
Eklentiler:RateLimitingPlugin
Önkoşullar:Geliştirme Ara Sunucusunu Ayarlama

Hız Sınırı üst bilgileri, bir istemcinin belirli bir süre içinde gerçekleştirebileceği istek sayısını sınırlamak için HTTP yanıtlarında kullanılır.

Sunucu, bu üst bilgileri istemcinin isteğine yanıt olarak göndererek kaç isteğe izin verilip sınıra ulaşılana kadar kaç istek kaldığını belirtir.

Yanıt RateLimit-Limit üst bilgisi alanı, geçerli zaman penceresinde istemciyle ilişkilendirilmiş istek kotasını gösterir. İstemci bu sınırı aşarsa hizmet verilmeyebilir.

Özel hız sınırı desteği

Hız sınırını aştığınızda, bazı API'ler özel bir hata mesajı içeren bir durum kodu 403 Forbidden döndürmek gibi özel davranışlar sergileyebilir. Dev Proxy, Custom özelliği için whenLimitExceeded değerini kullanarak bu özel davranışların benzetimini yapmanızı sağlar.

Aşağıdaki örnekte, GitHub API'si için hız sınırlarını simüle etmek için devproxyrc dosyasında RateLimitingPlugin'i nasıl yapılandırabileceğiniz gösterilmektedir.

Dosya: devproxyrc.json (rateLimiting yapılandırma bölümü)

{
  "rateLimiting": {
    "headerLimit": "X-RateLimit-Limit",
    "headerRemaining": "X-RateLimit-Remaining",
    "headerReset": "X-RateLimit-Reset",
    "costPerRequest": 1,
    "resetTimeWindowSeconds": 3600,
    "warningThresholdPercent": 0,
    "rateLimit": 60,
    "resetFormat": "UtcEpochSeconds",
    "whenLimitExceeded": "Custom",
    "customResponseFile": "github-rate-limit-exceeded.json"
  }
}

, customResponseFile uygulamanız hız sınırına ulaştığında proxy'nin döndürdüğü yanıtı içerir.

Dosya: github-rate-limit-exceeded.json

{
  "statusCode": 403,
  "headers": [
    {
      "name": "Content-Type",
      "value": "application/json; charset=utf-8"
    }
  ],
  "body": {
    "message": "You have exceeded a secondary rate limit and have been temporarily blocked from content creation. Please retry your request again later.",
    "documentation_url": "https://docs.github.com/rest/overview/resources-in-the-rest-api#secondary-rate-limits"
  }
}

Sonraki adımlar

RateLimitingPlugin hakkında daha fazla bilgi edinin.

Ayrıca bakınız