Simulare risposte api Rate-Limit

Rate-Limit intestazioni vengono usate nelle risposte HTTP per limitare il numero di richieste che un client può effettuare entro un determinato periodo di tempo.

Il server invia queste intestazioni in risposta alla richiesta di un client per indicare il numero di richieste consentite e il numero di richieste che rimangono prima del raggiungimento del limite.

Il RateLimit-Limit campo dell'intestazione della risposta indica la quota richiesta associata al client nella finestra temporale corrente. Se il client supera tale limite, potrebbe non essere servito.

Supporto del limite di frequenza personalizzato

Quando si supera il limite di velocità, alcune API usano comportamenti personalizzati, ad esempio la restituzione di un 403 Forbidden codice di stato con un messaggio di errore personalizzato. Dev Proxy consente di simulare questi comportamenti personalizzati usando il Custom valore per la whenLimitExceeded proprietà .

L'esempio seguente illustra come configurare RateLimitingPlugin nel file devproxyrc per simulare i limiti di frequenza per l'API GitHub.

{
  "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 Contiene la risposta restituita dal proxy quando l'app ha raggiunto il limite di velocità.

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

Passaggi successivi

Altre informazioni su RateLimitingPlugin.