Dela via


Simulera Rate-Limit API-svar

Rate-Limit huvuden används i HTTP-svar för att begränsa antalet begäranden som en klient kan göra inom en viss tidsperiod.

Servern skickar dessa huvuden som svar på en klients begäran för att ange hur många begäranden som tillåts och hur många begäranden som återstår innan gränsen nås.

Fältet RateLimit-Limit för svarshuvud anger den begärandekvot som är associerad med klienten i det aktuella tidsfönstret. Om klienten överskrider den gränsen kanske den inte hanteras.

Stöd för anpassad hastighetsbegränsning

När du överskrider hastighetsgränsen använder vissa API:er anpassade beteenden, till exempel att returnera en 403 Forbidden statuskod med ett anpassat felmeddelande. Med Dev Proxy kan du simulera dessa anpassade beteenden med hjälp Custom av värdet för whenLimitExceeded egenskapen.

I följande exempel visas hur du kan konfigurera hur du kan konfigurera RateLimitingPlugin i filen devproxyrc för att simulera hastighetsgränser för GitHub-API:et.

{
  "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 innehåller det svar som proxyn returnerar när appen nådde hastighetsgränsen.

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

Nästa steg

Läs mer om RateLimitingPlugin.