Rate Limit

Este interceptor define la cantidad máxima de peticiones (requests) permitidas en un intervalo de tiempo "completo" (a partir de la hora del servidor) y se puede introducir en el flujo de la API o del plan.

Para una API, el interceptor puede ser insertado a nivel global, de un recurso o una operación. En todos estos casos, la tasa será incrementada independientemente de quién haya hecho la solicitud, respetando el intervalo configurado.

Si se añade al flujo de un plan, aumentará la tasa específica de la persona que llama (aplicación o token de acceso). En ambos casos, se puede agregar un nuevo header con la cantidad de peticiones restantes.

Es fácil confundir el funcionamiento del Rate Limit con otro interceptor que controla el tráfico, el Spike Arrest. Por esto, hemos creado una FAQ con las definiciones de Spike Arrest y Rate Limit, sus diferencias y ejemplos de configuración.

Configuración

rate limit

El interceptor solo puede insertarse en el flujo de solicitud (request). Para configurarlo, complete las propiedades:

  • Configuration type: determina el tipo de configuración a ser usada por el interceptor, que puede ser:

    • Total calls: configura el interceptor por el número total de llamadas.

    • IP: configura el interceptor por llamadas por IP, permitiendo bloquear llamadas repetidas desde la misma IP.

    • Header: configura un header específico para la restricción de tráfico. Al seleccionar esta opción, debe informar:

      • Key: la clave del header deseado.

      • Missing header behavior: configura el comportamiento para solicitudes sin el header. Elija entre:

        1. Allow: ignora el procesamiento del interceptor, permitiendo el flujo de la solicitud.

        2. Total Calls: trata la solicitud con base en el número total de llamadas.

        3. Abort: bloquea la solicitud.

La configuración por header fue creada para atender las exigencias regulatorias para APIs de Open Finance, pero también puede usarla en su contexto.
  • Calls: el número total de llamadas aceptadas.

  • Interval: determina el intervalo de tiempo en el que se aceptarán las llamadas. Puede ser por segundo, minuto, hora, día, semana o mes.

El interceptor considera intervalos "completos". Por ejemplo, si configura un intervalo de un minuto y comienza a realizar peticiones a las 11:55:55, cuando cambie el minuto a las 11:56:00, se tendrá un nuevo conjunto de peticiones permitidos para ese recurso. Funciona de la misma manera para otros intervalos de tiempo.
  • Soft Limit: permite configurar un porcentaje adicional de llamadas permitidas. Para ello, marque la opción y añada el valor en el campo % a la derecha. En el ejemplo de la imagen, hemos configurado un límite de 300 llamadas por minuto con un 30% de exceso permitido, se aceptarán hasta 90 llamadas más.

Si la opción Soft Limit está marcada, el campo % es obligatorio. De lo contrario, Rate Limit funcionará normalmente con la cantidad de cuota configurada en el campo Calls
  • Return quota header: si se marca, un parámetro con la cantidad de solicitudes restantes será enviado con el header de la respuesta.

  • Al hacer una solicitud, el header de la response x-ratelimit-remaining muestra la cantidad de llamadas restantes.

  • El header x-ratelimit-reset muestra el tiempo restante para el próximo intervalo.

Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]