Delen via


Api-antwoorden voor frequentielimiet simuleren

Rate-Limit-headers worden gebruikt in HTTP-antwoorden om het aantal aanvragen te beperken dat een client binnen een bepaalde periode kan maken.

De server verzendt deze headers als reactie op de aanvraag van een client om aan te geven hoeveel aanvragen zijn toegestaan en hoeveel aanvragen er blijven voordat de limiet wordt bereikt.

Het RateLimit-Limit veld antwoordheader geeft het aanvraagquotum aan dat is gekoppeld aan de client in het huidige tijdvenster. Als de client deze limiet overschrijdt, wordt deze mogelijk niet geleverd.

Ondersteuning voor aangepaste frequentielimieten

Wanneer u de frequentielimiet overschrijdt, gebruiken sommige API's aangepast gedrag, zoals het retourneren van een 403 Forbidden statuscode met een aangepast foutbericht. Met Dev Proxy kunt u dit aangepaste gedrag simuleren met behulp van de Custom waarde voor de whenLimitExceeded eigenschap.

In het volgende voorbeeld ziet u hoe u RateLimitingPlugin kunt configureren in het devproxyrc-bestand om frequentielimieten voor de GitHub-API te simuleren.

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

Het customResponseFile bevat het antwoord dat de proxy retourneert wanneer uw app de frequentielimiet heeft bereikt.

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

Volgende stappen

Meer informatie over de RateLimitingPlugin.