Sdílet prostřednictvím


Simulace odpovědí rozhraní API Rate-Limit

Rate-Limit hlaviček se v odpovědích HTTP používají k omezení počtu požadavků, které může klient v daném časovém období provádět.

Server odešle tyto hlavičky jako odpověď na požadavek klienta, aby bylo uvedeno, kolik požadavků je povolených a kolik požadavků zbývá, než se dosáhne limitu.

Pole RateLimit-Limit hlavičky odpovědi označuje kvótu požadavku přidruženou ke klientovi v aktuálním časovém intervalu. Pokud klient překročí tento limit, nemusí být obsloužen.

Podpora vlastního limitu přenosové rychlosti

Když překročíte limit rychlosti, některá rozhraní API používají vlastní chování, například vrácení stavového 403 Forbidden kódu s vlastní chybovou zprávou. Dev Proxy umožňuje simulovat toto vlastní chování pomocí Custom hodnoty vlastnosti whenLimitExceeded .

Následující příklad ukazuje, jak můžete nakonfigurovat způsob konfigurace RateLimitingPlugin v souboru devproxyrc pro simulaci omezení rychlosti pro rozhraní API GitHubu.

{
  "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"
  }
}

Obsahuje customResponseFile odpověď, kterou proxy vrátí, když vaše aplikace dosáhla limitu rychlosti.

{
  "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"
  }
}

Další kroky

Další informace o .RateLimitingPlugin