Simulieren von rate-limitierten API-Antworten

Tip

Neu bei der Begrenzung der Rate? Erfahren Sie , was das Einschränken von Raten ist und wie Sie damit umgehen können.

Auf einen Blick
Ziel: Simulieren des Geschwindigkeitsbegrenzungsverhaltens für jede API
Zeit: 10 Minuten
Plugins:RateLimitingPlugin
Voraussetzungen:Einrichten des Dev-Proxys

Rate-Limit-Header werden in HTTP-Antworten verwendet, um die Anzahl der Anforderungen zu begrenzen, die ein Client innerhalb eines bestimmten Zeitraums vornehmen 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 verbleiben, bevor der Grenzwert erreicht wird.

Das RateLimit-Limit Antwortheaderfeld 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 für benutzerdefinierte Ratenbeschränkungen

Wenn Sie die Ratenbegrenzung überschreiten, reagieren einige APIs auf benutzerdefinierte Weise, z. B. indem sie einen 403 Forbidden-Statuscode mit einer benutzerdefinierten Fehlermeldung zurückgeben. Dev Proxy ermöglicht Es Ihnen, diese benutzerdefinierten Verhaltensweisen mithilfe des Custom Werts für die whenLimitExceeded Eigenschaft zu simulieren.

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

Datei: devproxyrc.json (Abschnitt "RateLimiting config")

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

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

Datei: github-rate-limit-exceeded.json

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

Erfahren Sie mehr über RateLimitingPlugin.

Siehe auch