RateLimitMiddleware

一个简单的 Vapor 4 速率限制中间件。

安装

要使用 RateLimitMiddleware,请将以下内容添加到您的包清单中。

let package = Package(
    ...
    dependencies: [
        .package(url: "https://github.com/devmaximilian/RateLimitMiddleware.git", from: "4.0.0"),
    ],
    targets: [
        .target(
            name: "<target name>",
            dependencies: [
                .product(name: "RateLimitMiddleware", package: "RateLimitMiddleware")
            ]
        )
    ]
)

使用

/// Limits requests to 60 requests per 30 minutes 
let rateLimitMiddleware = RateLimitMiddleware(
    limit: 60,
    refreshInterval: .minutes(30)
)

应用程序

要对每个端点实施应用程序范围的速率限制,请在 configure.swift 中注册中间件。

public func configure(_ app: Application) throws {
    ...
    app.middleware.use(rateLimitMiddleware)
    ...
}

路由组

要对每个路由组实施速率限制,请为该特定路由组注册中间件。

let rateLimitedGroup = app.routes.grouped(rateLimitMiddleware)

rateLimitedGroup.get("hello") { _ in
    return "Hello, world!"
}

或者

app.routes.group(rateLimitMiddleware) { builder in
    builder.get("hello") { _ in
        return "Hello, world!"
    }
}

自动清除缓存

为了防止过期缓存永远留在内存中,可以选择启用自动清除。

/// Limits requests to 60 requests per 30 minutes 
let rateLimitMiddleware = RateLimitMiddleware(
    limit: 60,
    refreshInterval: .minutes(30),
    autoPurge: true
)

由于此功能可能会影响性能(当缓存清除运行时),因此默认情况下它是关闭的。