Sdílet prostřednictvím


Simulace odpovědí rozhraní API pro omezení rychlosti

Hlavičky limitu rychlosti se používají v odpovědích HTTP k omezení počtu požadavků, které klient může v daném časovém období provést.

Server odešle tyto hlavičky v reakci na požadavek klienta, aby indikuje, kolik požadavků je povoleno a kolik požadavků zůstává před dosažením limitu.

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

Podpora vlastních omezení 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 nakonfigurovat způsob konfigurace RateLimitingPlugin v souboru devproxyrc pro simulaci limitů 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 server 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 nástroji RateLimitingPlugin.