Freigeben über


Simulieren von API-Antworten für Die Rate-Limit-API

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 den Satzgrenzwert überschreiten, verwenden einige APIs benutzerdefinierte Verhaltensweisen, z. B. das Zurückgeben eines 403 Forbidden Statuscodes mit einer benutzerdefinierten Fehlermeldung. 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 konfigurieren können, wie Sie RateLimitingPlugin in der Devproxyrc-Datei konfigurieren können, um Ratelimits 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"
  }
}

Die customResponseFile Antwort enthält die Antwort, die der Proxy zurückgibt, wenn ihre App das Zinslimit 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.