| Crates.io | actix_route_rate_limiter |
| lib.rs | actix_route_rate_limiter |
| version | 0.3.1 |
| created_at | 2024-07-21 23:19:46.075702+00 |
| updated_at | 2025-08-14 23:28:46.085227+00 |
| description | Actix Web middleware to rate limit routes |
| homepage | |
| repository | https://github.com/harr1424/Actix-Route-Rate-Limiter |
| max_upload_size | |
| id | 1310638 |
| size | 105,259 |
A library crate that can be used to add rate limiting middleware to Actix Web Application routes.
use std::sync::Arc;
use actix_web::{web, App, HttpServer, HttpResponse};
use chrono::Duration;
use actix_route_rate_limiter::{LimiterBuilder, RateLimiter};
#[actix_web::main]
pub async fn main() -> std::io::Result<()> {
// build a limiter
let limiter = LimiterBuilder::new()
.with_duration(Duration::seconds(20)) // default value is one second
.with_num_requests(2) // default value is one request
.with_cleanup(Duration::minutes(1)) // default to no cleanup of stale entries
.build();
HttpServer::new(move || {
App::new()
.wrap(RateLimiter::new(Arc::clone(&limiter)))
.route("/", web::get().to(HttpResponse::Ok))
})
.bind(("0.0.0.0", 12345))?
.run()
.await
}
This crate can be used to wrap routes with rate limiting logic by defining a duration and number of requests that will be forwarded during that duration.
If a quantity of requests exceeds this amount, the middleware will short circuit the request and instead send an HTTP 429 - Too Many Requests response with headers describing the rate limit:
Retry-After : the rate-limiting duration, begins at first request received and ends after this elapsed timeX-RateLimit-Limit : number of requests allowed for the durationX-RateLimit-Remaining : number of requests remaining for current durationX-RateLimit-Reset : number of seconds remaining in the duration