avnsh1111/laravel-api-rate-limiter

Laravel API Rate Limiter 是一个开源包,旨在帮助开发者在 Laravel 应用程序中轻松实现和管理 API 端点的速率限制。本包旨在提供一个灵活且可配置的解决方案,以保护 API 免受过多请求的影响,确保最佳性能并防止滥用。

v1 2023-04-24 11:51 UTC

This package is auto-updated.

Last update: 2024-09-24 15:01:59 UTC


README

Laravel API Rate Limiter 是一个开源包,旨在帮助开发者在 Laravel 应用程序中轻松实现和管理 API 端点的速率限制。本包旨在提供一个灵活且可配置的解决方案,以保护 API 免受过多请求的影响,确保最佳性能并防止滥用。

目录

安装

您可以通过 composer 安装此包

composer require avnsh1111/laravel-api-rate-limiter

配置

在发布配置文件之前,您需要将 LaravelApiRateLimiterServiceProvider 添加到您的 config/app.php 文件中的 providers 数组

'providers' => [
    // ...
    Avnsh1111\LaravelApiRateLimiter\LaravelApiRateLimiterServiceProvider::class,
],

添加 ServiceProvider 后,发布配置文件以配置速率限制设置

php artisan vendor:publish --provider="Avnsh1111\LaravelApiRateLimiter\LaravelApiRateLimiterServiceProvider"

这将在您的 config 文件夹中创建一个 laravel-api-rate-limiter.php 配置文件。

在配置文件中,您可以设置默认速率限制、速率限制方法、响应头以及特定 IP 地址、用户和路由的黑白名单。

return [
    'default_limit' => 60, // default number of requests allowed per minute

    'rate_limit_by' => 'ip', // rate limit by 'ip', 'user', or 'route'

    'response_headers' => true, // include rate limit headers in responses

    'whitelist' => [
        'ips' => [], // IP addresses to whitelist
        'users' => [], // User IDs to whitelist
        'routes' => [], // Route names to whitelist
    ],
    'blacklist' => [
        'ips' => [], // IP addresses to blacklist
        'users' => [], // User IDs to blacklist
        'routes' => [], // Route names to blacklist
    ],

];

使用

要将对特定路由或路由组应用速率限制,请使用提供的中间件

use Avnsh1111\LaravelApiRateLimiter\Middleware\RateLimiter;

Route::middleware([RateLimiter::class])->group(function () {
    Route::get('/api/endpoint', 'ApiController@index');
});

您还可以通过将限制作为参数传递给中间件来自定义特定路由的速率限制

Route::get('/api/endpoint', 'ApiController@index')->middleware(RateLimiter::class . ':100'); // 100 requests per minute

附加组件

  1. 与 Laravel 内置的缓存系统集成,以高效地存储和管理速率限制数据。
  2. 一个用户友好的仪表板,用于监控速率限制统计数据,如请求数量、阻止请求以及白名单/黑名单 IP 或用户。
  3. 支持根据服务器负载或其他性能指标自动调整速率限制。
  4. 与流行的第三方 API 管理和监控工具(如 Postman 或 Swagger)集成,以提供额外的见解和控制 API 使用。

支持

如果您遇到任何问题或需要帮助,请查看全面的文档或通过 GitHub 上的问题跟踪器联系社区。

贡献

欢迎贡献!如果您想为项目做出贡献,请复制仓库,进行更改,并提交拉取请求。请确保遵循编码标准,并为任何新功能或错误修复提供测试。

许可证

Laravel API Rate Limiter 包是开源软件,许可协议为 MIT 许可证