Dela via


Simulera API-svar för hastighetsbegränsning

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.

Svarshuvudfältet RateLimit-Limit anger begärandekvoten som är associerad med klienten i det aktuella tidsfönstret. Om klienten överskrider den gränsen kanske den inte kan betjänas.

Stöd för anpassad hastighetsgräns

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 genom att använda Custom värdet för whenLimitExceeded egenskapen.

I följande exempel visas hur du kan konfigurera hur du kan konfigurera RateLimitingPlugin i devproxyrc-filen för att simulera hastighetsbegränsningar 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 svaret som proxyn returnerar när din app 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.