Share via


Simular respuestas de api de Rate-Limit

Rate-Limit encabezados se usan en respuestas HTTP para limitar el número de solicitudes que un cliente puede realizar en un período de tiempo determinado.

El servidor envía estos encabezados en respuesta a la solicitud de un cliente para indicar cuántas solicitudes se permiten y cuántas solicitudes permanecen antes de alcanzar el límite.

El RateLimit-Limit campo de encabezado de respuesta indica la cuota de solicitud asociada al cliente en la ventana de tiempo actual. Si el cliente supera ese límite, es posible que no se sirva.

Compatibilidad con el límite de velocidad personalizado

Cuando se supera el límite de frecuencia, algunas API usan comportamientos personalizados, como devolver un 403 Forbidden código de estado con un mensaje de error personalizado. Dev Proxy permite simular estos comportamientos personalizados mediante el Custom valor de la whenLimitExceeded propiedad .

En el ejemplo siguiente se muestra cómo puede configurar cómo puede configurar RateLimitingPlugin en el archivo devproxyrc para simular los límites de velocidad para la API de 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 respuesta que devuelve el proxy cuando la aplicación alcanzó el límite de velocidad.

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

Pasos siguientes

Obtenga más información sobre .RateLimitingPlugin