Simular respuestas de la API de limitación de tasa
Los encabezados rate-Limit se usan en respuestas HTTP para limitar el número de solicitudes que un cliente puede realizar dentro de 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 el período de tiempo actual. Si el cliente supera ese límite, es posible que no se le proporcione servicio.
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 usando el valor Custom
para la propiedad whenLimitExceeded
.
En el ejemplo siguiente se muestra cómo puede configurar RateLimitingPlugin en el archivo devproxyrc para simular los límites de velocidad de 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
Más información sobre RateLimitingPlugin
.