Share via


Simulieren Rate-Limit API-Antworten

Rate-Limit Header werden in HTTP-Antworten verwendet, um die Anzahl von Anforderungen zu begrenzen, die ein Client innerhalb eines bestimmten Zeitraums stellen kann.

Der Server sendet diese Header als Antwort auf die Anforderung eines Clients, um anzugeben, wie viele Anforderungen zulässig sind und wie viele Anforderungen noch vorhanden sind, bevor das Limit erreicht wird.

Das RateLimit-Limit Feld "Antwortheader" gibt das Anforderungskontingent an, das dem Client im aktuellen Zeitfenster zugeordnet ist. Wenn der Client diesen Grenzwert überschreitet, wird er möglicherweise nicht bedient.

Unterstützung benutzerdefinierter Ratenlimits

Wenn Sie das Ratenlimit überschreiten, verwenden einige APIs benutzerdefinierte Verhaltensweisen, z. B. das Zurückgeben eines 403 Forbidden status Codes mit einer benutzerdefinierten Fehlermeldung. Mit dem Dev-Proxy können Sie diese benutzerdefinierten Verhaltensweisen mithilfe des Custom Werts für die whenLimitExceeded -Eigenschaft simulieren.

Das folgende Beispiel zeigt, wie Sie konfigurieren können, wie Sie RateLimitingPlugin in der devproxyrc-Datei konfigurieren können, um Ratenlimitgrenzwerte für die GitHub-API zu simulieren.

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

Enthält customResponseFile die Antwort, die der Proxy zurückgibt, wenn Ihre App das Ratenlimit erreicht hat.

{
  "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ächste Schritte

Weitere Informationen finden Sie unter RateLimitingPlugin.