Limitación de Tasa
🚦 Limitación de Tasa
Sección titulada «🚦 Limitación de Tasa»Este ejemplo muestra cómo usar la extensión rateLimit
de Zuno para limitar la cantidad de solicitudes que un cliente puede hacer en un periodo de tiempo. Esto es útil para:
- Prevenir ataques de denegación de servicio (DoS)
- Proteger endpoints públicos
- Controlar el uso de recursos
🧱 Estructura del Proyecto
Sección titulada «🧱 Estructura del Proyecto»rate-limit-example/├── CMakeLists.txt└── main.cpp
📄 CMakeLists.txt
Sección titulada «📄 CMakeLists.txt»cmake_minimum_required(VERSION 3.20)project(rate_limit_example)
set(CMAKE_CXX_STANDARD 20)set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(FetchContent)
FetchContent_Declare(zunoGIT_REPOSITORY https://github.com/ZunoFramework/zuno.gitGIT_TAG main)
FetchContent_MakeAvailable(zuno)
add_executable(rate-limit-example main.cpp)target_link_libraries(rate-limit-example PRIVATE zuno)
📄 main.cpp
Sección titulada «📄 main.cpp»#include <zuno/zuno.hpp>#include <zuno/extensions/rate_limit.hpp>
int main() {zuno::App app;
// Permitir hasta 5 solicitudes por minuto por IPapp.use(zuno::rateLimit({ .intervalMs = 60'000, .max = 5}));
app.get("/", [](auto& req, auto& res) { res.send("¡Bienvenido! No has excedido el límite de solicitudes.");});
app.listen(3000);}
⚙️ Parámetros Disponibles
Sección titulada «⚙️ Parámetros Disponibles»Opción | Descripción |
---|---|
intervalMs | Duración de la ventana de tiempo en milisegundos |
max | Máximo de solicitudes permitidas por ventana |
🧪 Probar el Límite
Sección titulada «🧪 Probar el Límite»Puedes probarlo con un bucle en curl
:
for i in {1..6}; do curl -i http://localhost:3000; echo; done
La sexta solicitud debería devolver un código 429 Too Many Requests
.
🧭 Próximos Pasos
Sección titulada «🧭 Próximos Pasos»- Combina con CORS y TLS
- Usa almacenamiento persistente para límites distribuidos
- Aplica límites por ruta o grupo de rutas
Zuno te permite proteger tus endpoints con límites inteligentes—sin complicaciones ni dependencias externas.