¿Cómo implementar la limitación de API?

Jan 01, 2026

Dejar un mensaje

¡Hola! Como proveedor de API, llevo un tiempo en este juego y uno de los aspectos más cruciales para ejecutar un servicio API exitoso es implementar la limitación de API. En esta publicación de blog, compartiré con ustedes cómo implementar la limitación de API de manera efectiva.

¿Qué es la limitación de API?

Primero lo primero, hablemos de qué es la limitación de API. La limitación de API es una técnica utilizada para controlar la velocidad a la que los clientes pueden acceder a una API. Establece límites en la cantidad de solicitudes que un cliente puede realizar dentro de un período de tiempo específico. Esto ayuda a prevenir abusos, proteger los recursos del servidor y garantizar un uso justo para todos los usuarios.

¿Por qué es importante la limitación de API?

Hay varias razones por las que la limitación de API es importante. Para empezar, ayuda a prevenir ataques de denegación de servicio (DoS). Los usuarios malintencionados podrían intentar inundar su API con solicitudes para sobrecargar sus servidores e interrumpir su servicio. La limitación limita la cantidad de solicitudes que pueden realizar, lo que les dificulta llevar a cabo dichos ataques.

En segundo lugar, garantiza que los recursos de su servidor se utilicen de manera eficiente. Si tiene una gran cantidad de clientes que realizan solicitudes excesivas simultáneamente, sus servidores podrían saturarse, lo que provocaría tiempos de respuesta lentos o incluso fallas. Al limitar las solicitudes, puede administrar la carga en sus servidores y mantener su API funcionando sin problemas.

Finalmente, promueve el uso justo entre todos los clientes. Sin limitación, algunos clientes podrían monopolizar los recursos de su API, dejando a otros con un rendimiento deficiente. La limitación garantiza que cada cliente obtenga una parte justa de los recursos disponibles.

Cómo implementar la limitación de API

1. Algoritmo de depósito de tokens

Uno de los algoritmos más populares para la limitación de API es el algoritmo de depósito de tokens. Así es como funciona:

Imagine que tiene un cubo que puede contener una determinada cantidad de fichas. Cada token representa una solicitud que un cliente puede realizar. A intervalos regulares, se agregan nuevos tokens al depósito hasta su capacidad máxima. Cuando un cliente realiza una solicitud, tiene que "gastar" un token del depósito. Si no quedan tokens en el depósito, la solicitud se rechaza o se pone en cola hasta que haya un token disponible.

Aquí hay un pseudocódigo simple similar a Python para implementar el algoritmo del depósito de tokens:

Fenofibrate丨CAS 49562-28-9Hydrocortisone Acetate丨CAS 50-03-3

clase TokenBucket: def __init__(self, capacidad, tasa): self.capacity = capacidad self.rate = tasa self.tokens = capacidad self.last_update = time.time() def get_tokens(self): ahora = time.time() # Calcular el número de tokens agregados desde la última actualización new_tokens = (ahora - self.last_update) * self.rate self.tokens = min(self.capacity, self.tokens + new_tokens) self.last_update = ahora devuelve self.tokens def consumir(self, tokens): if self.get_tokens() >= tokens: self.tokens -= tokens return True return False

En este código,capacidades el número máximo de tokens que el depósito puede contener, ytasaes la velocidad a la que se agregan nuevos tokens al depósito por segundo.

2. Algoritmo de ventana fija

El algoritmo de ventana fija es otra forma sencilla de implementar la limitación de API. Con este algoritmo, divides el tiempo en intervalos fijos (por ejemplo, cada minuto o cada hora). Para cada intervalo, realiza un seguimiento del número de solicitudes que ha realizado un cliente. Si el número de solicitudes excede un límite predefinido dentro de ese intervalo, las solicitudes posteriores se rechazan.

Así es como podrías implementarlo en Python:

importar clase de tiempo FixedWindowThrottler: def __init__(self, limit, window): self.limit = limit self.window = ventana self.request_count = 0 self.window_start = time.time() def enable_request(self): ahora = time.time() if now - self.window_start > self.window: # Restablecer la ventana self.request_count = 0 self.window_start = ahora si self.request_count < self.limit: self.request_count += 1 retorno Verdadero retorno Falso

En este código,límitees el número máximo de solicitudes que un cliente puede realizar dentro delventanaperiodo de tiempo.

3. Algoritmo de ventana deslizante

El algoritmo de ventana deslizante es una versión más avanzada del algoritmo de ventana fija. En lugar de dividir el tiempo en intervalos fijos, utiliza una ventana deslizante para realizar un seguimiento de las solicitudes. Esto significa que la ventana se mueve continuamente y tiene en cuenta las solicitudes realizadas en el pasado reciente.

Para implementar el algoritmo de ventana deslizante, puede utilizar una estructura de datos como un búfer circular para almacenar las marcas de tiempo de cada solicitud. Luego verifica si la cantidad de solicitudes dentro de la ventana deslizante excede el límite.

de colecciones importar deque importar clase de tiempo SlidingWindowThrottler: def __init__(self, limit, window): self.limit = limit self.window = window self.request_timestamps = deque() def enable_request(self): now = time.time() # Eliminar solicitudes antiguas de la deque mientras self.request_timestamps y ahora - self.request_timestamps[0] > self.window: self.request_timestamps.popleft() if len(self.request_timestamps) < self.limit: self.request_timestamps.append(ahora) return True return False

Implementación de limitación en su API

Una vez que haya elegido un algoritmo, deberá integrarlo en su API. Estos son los pasos generales:

1. Identificar al Cliente

Debe tener una forma de identificar a cada cliente que realiza solicitudes a su API. Esto podría realizarse a través de una clave API, una identificación de usuario o algún otro identificador único.

2. Almacenar información del acelerador

Necesitará almacenar información sobre el historial de solicitudes de cada cliente. Esto podría ser en una base de datos, un caché (como Redis) o una estructura de datos en memoria. Por ejemplo, si está utilizando el algoritmo del depósito de tokens, deberá almacenar la cantidad de tokens que cada cliente tiene en su depósito.

3. Verifique los límites del acelerador

Antes de procesar una solicitud, verifique si el cliente ha excedido sus límites de aceleración. Si es así, devuelva una respuesta de error adecuada (por ejemplo, un código de estado 429 Demasiadas solicitudes). Si no lo han hecho, procese la solicitud normalmente y actualice la información del acelerador en consecuencia.

Ejemplos de limitación de API en API del mundo real

Echemos un vistazo a algunos ejemplos del mundo real. Por ejemplo, la API de Twitter tiene límites estrictos de limitación. Los diferentes tipos de terminales tienen diferentes límites de velocidad. Por ejemplo, la API de búsqueda tiene un límite de 450 solicitudes por ventana de 15 minutos para usuarios estándar.

Otro ejemplo es la API de Google Maps. Google utiliza limitaciones para gestionar el uso de sus servicios de mapas. Tienen diferentes niveles de límites de uso según el tipo de servicio y el plan de precios en el que se encuentre.

Conclusión

La implementación de la limitación de API es esencial para cualquier proveedor de API. Ayuda a proteger su servicio contra abusos, administrar los recursos del servidor y garantizar un uso justo entre todos los clientes. Ya sea que elija el algoritmo de depósito de tokens, el algoritmo de ventana fija o el algoritmo de ventana deslizante, asegúrese de integrarlo correctamente en su API.

Si está en la industria farmacéutica y busca API de alta calidad comoFenofibrato 丨 CAS 49562-28-9,Finasterida 丨CAS 98319 - 26 - 7, oAcetato de hidrocortisona 丨CAS 50-03-3y está interesado en nuestros servicios API, nos encantaría conversar con usted sobre sus necesidades. No dude en comunicarse con nosotros para iniciar una conversación sobre sus requisitos de API y cómo podemos trabajar juntos.

Referencias

  • Leighton, F. Thomson y Satish Rao. "Enrutamiento de paquetes y programación de trabajos en tiempo paralelo O (c log c)." Revista de la ACM (JACM) 40.2 (1993): 261 - 289.
  • Nagle, Juan. "Control de congestión en redes IP/TCP". Revisión de comunicación por computadora ACM SIGCOMM 14.5 (1984): 11 - 17.
Envíeconsulta
Más allá de tus expectativas
De la ciencia a la vida con LEAPChem
contáctanos