#rate-limiting #actix-web-middleware #middleware #actix-web #actix-middleware

limitation-actix-middleware

使用基于头的固定窗口计数器进行请求速率限制的 Actix 网页中间件。

2 个版本

0.1.1 2019 年 10 月 20 日
0.1.0 2019 年 10 月 20 日

#12 in #rate-limit

每月下载 22 次
limitation-proxy 中使用

MPL-2.0 许可证

73KB
494

limitation-actix-middleware

CI CI Status
最新版本 Latest version
文档 Documentation
包下载量 Crate downloads
许可证 Crate license

目录

使用基于头的固定窗口计数器进行请求速率限制的 Actix 网页中间件。

使用方法

limitation-actix-middleware 添加到您的 Cargo.toml

[dependencies]
limitation-actix-middleware = "0.1.1"

快速示例

RateLimiter 中间件是主要类型,旨在插入 Actix 网页应用程序的中间件链。中间件需要存在 2 个 Data 类型

  1. 一个 HeaderName,作为速率限制键使用的头
  2. 一个 Limiter,执行速率限制并管理持久性
use actix_web::{http::header::HeaderName, web, App, HttpResponse};
use limitation_actix_middleware::{Limiter, RateLimiter};

// Choose a header to use for rate limit tracking
let header = web::Data::new(HeaderName::from_static("authorization"));
// Build a `Limiter` which will be used by the middleware
let limiter = web::Data::new(Limiter::build("redis://127.0.0.1/").finish()?);

let app = App::new()
    // Register the header as application data
    .register_data(header.clone())
    // Register the Limiter as application data
    .register_data(limiter.clone())
    // Insert the RateLimter middleware
    .wrap(RateLimiter)
    .service(
        web::resource("/test")
            .route(web::get().to(|| HttpResponse::Ok()))
            .route(web::head().to(|| HttpResponse::MethodNotAllowed()))
    );

示例

此crate附带一个名为 catchall 的示例程序,可以从源代码运行

$ cargo run --example catchall

CI 状态

构建(master 分支)

操作系统 稳定 Rust 夜间 Rust MSRV
FreeBSD FreeBSD Stable Build Status FreeBSD Nightly Build Status FreeBSD Oldest Build Status
Linux Linux Stable Build Status Linux Nightly Build Status Linux Oldest Build Status
macOS macOS Stable Build Status macOS Nightly Build Status macOS Oldest Build Status
Windows Windows Stable Build Status Windows Nightly Build Status Windows Oldest Build Status

测试(master 分支)

操作系统 稳定 Rust 夜间 Rust MSRV
FreeBSD FreeBSD Stable Test Status FreeBSD Nightly Test Status FreeBSD Oldest Test Status
Linux Linux Stable Test Status Linux Nightly Test Status Linux Oldest Test Status
macOS macOS Stable Test Status macOS Nightly Test Status macOS Oldest Test Status
Windows Windows Stable Test Status Windows Nightly Test Status Windows Oldest Test Status

检查(master 分支)

状态
代码检查 Lint Status
格式化 Format Status

行为准则

本项目遵循贡献者公约 行为准则。通过参与,您应遵守此准则。如有不适当的行为,请通过 [email protected] 报告。

问题

如果您对此项目有任何问题或疑问,请通过 GitHub 问题 联系我们。

贡献

欢迎您为新的功能、修复或更新做出贡献,无论大小;我们总是很高兴收到拉取请求,并尽可能快地处理它们。

在开始编码之前,我们建议通过 GitHub issue 讨论您的计划,尤其是对于更雄心勃勃的贡献。这给其他贡献者一个机会为您指明正确的方向,对您的设计提供反馈,并帮助您了解是否有人正在做同样的事情。

发布历史

查看 变更日志 以获取完整的发布历史。

作者

Fletcher Nichol ([email protected]) 创建和维护。

许可证

许可协议为 Mozilla Public License Version 2.0 (LICENSE.txt)。

除非您明确声明,否则您有意提交以包含在您的工作中的任何贡献,根据 MPL-2.0 许可证定义,将按照上述方式许可,不附加任何额外的条款或条件。

依赖项

约 26MB
约 568K SLoC