Plugin de Limitación de Tasa

Simula comportamientos de límite de velocidad.

Captura de pantalla de un símbolo del sistema con proxy de desarrollo simulando la limitación de velocidad en las API de GitHub.

Ejemplo de configuración

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "RateLimitingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "rateLimiting"
    }
  ],
  "rateLimiting": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/ratelimitingplugin.schema.json",
    "costPerRequest": 2,
    "rateLimit": 120
  }
}

Propiedades de configuración

Propiedad Descripción Predeterminado
headerLimit Nombre del encabezado de respuesta que comunica el límite de limitación de velocidad RateLimit-Limit
headerRemaining Nombre del encabezado de respuesta que comunica el número restante de recursos antes del restablecimiento RateLimit-Remaining
headerReset Nombre del encabezado de respuesta que comunica el tiempo restante hasta el restablecimiento RateLimit-Reset
headerRetryAfter Nombre del encabezado de respuesta que comunica el período de reintento posterior Retry-After
costPerRequest ¿Cuántos recursos cuesta una solicitud? 2
resetTimeWindowSeconds Tiempo en segundos hasta el siguiente restablecimiento 60
warningThresholdPercent El porcentaje de uso que se usa cuando se supera comienza a devolver encabezados de respuesta de limitación de velocidad. 80
rateLimit Número de recursos de un período de tiempo 120
whenLimitExceeded El comportamiento que debe usar el complemento cuando se supera el límite. Use Throttle o Custom. Throttle
resetFormat Formato que se usa para determinar cuándo se restablece el límite de velocidad. Use SecondsLeft o UtcEpochSeconds. SecondsLeft
customResponseFile Archivo que contiene una respuesta de error personalizada que se usa cuando se supera el límite. rate-limit-response.json

Opciones de línea de comandos

Ninguno

Observaciones

Cuerpo de la respuesta personalizada

Si establece la body propiedad en el archivo de respuesta personalizado en un objeto o matriz JSON, el proxy de desarrollo lo serializa en JSON. Si lo establece en una cadena, Dev Proxy envía la cadena as-is, sin comillas circundantes. Dado que dev Proxy establece el Content-Type encabezado application/jsoncomo predeterminado , establezca el encabezado para que coincida con el Content-Type contenido al devolver contenido que no es JSON, por ejemplo text/plain.

Encabezado de respuesta Content-Type personalizado

Cuando whenLimitExceeded se establece Custom en y la respuesta personalizada tiene un body pero no define un Content-Type encabezado, Dev Proxy devuelve la respuesta con el Content-Type: application/json encabezado . Para devolver un tipo de contenido diferente, agregue el Content-Type encabezado al archivo de respuesta personalizado. El proxy de desarrollo usa el valor que especifique.

Paso siguiente