leonardohipolito / laravel-http-client-rate-limiter-middleware
这是我创建的包:laravel-http-client-rate-limiter-middleware
0.0.3
2023-09-05 16:55 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^9.0|^10.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-09-09 03:15:39 UTC
README
这是一个用于Laravel Http Client的速率限制器中间件。以下是你需要了解的内容:
- 指定每分钟或每秒的最大请求数量
- 当达到限制时,进程将
sleep
直到可以发出请求 - 实现自己的驱动程序以持久化速率限制器的请求存储。如果速率限制器需要在不同的进程之间工作,该包自带一个
InMemoryStore
。
安装
您可以通过composer安装此包
composer require leonardohipolito/laravel-http-client-rate-limiter-middleware
使用方法
Laravel 9
use GuzzleHttp\Middleware; use \LeonardoHipolito\LaravelHttpClientRateLimiterMiddleware\RateLimiterMiddleware; use \LeonardoHipolito\LaravelHttpClientRateLimiterMiddleware\CacheStore; Http::macro( 'jsonPlaceholder', fn () => Http::baseUrl('https://jsonplaceholder.typicode.com') ->withMiddleware(Middleware::mapRequest(RateLimiterMiddleware::perMinute(60, new CacheStore('jsonplaceholder-rate-limit')))) ->acceptJson() ->asJson() );
Laravel 10
use \LeonardoHipolito\LaravelHttpClientRateLimiterMiddleware\RateLimiterMiddleware; use \LeonardoHipolito\LaravelHttpClientRateLimiterMiddleware\CacheStore; Http::macro( 'jsonPlaceholder', fn () => Http::baseUrl('https://jsonplaceholder.typicode.com') ->withRequestMiddleware(RateLimiterMiddleware::perMinute(60, new CacheStore('jsonplaceholder-rate-limit') ->acceptJson() ->asJson() );
您可以为每秒或每分钟创建一个速率限制器。
use \LeonardoHipolito\LaravelHttpClientRateLimiterMiddleware\RateLimiterMiddleware; RateLimiterMiddleware::perSecond(5); RateLimiterMiddleware::perMinute(60);
自定义存储
默认情况下,速率限制器在Cache中工作。这意味着如果您有第二个PHP进程,但您可以创建自己的存储。
use \LeonardoHipolito\LaravelHttpClientRateLimiterMiddleware\RateLimiterMiddleware; use MyApp\RateLimiterStore; use \LeonardoHipolito\LaravelHttpClientRateLimiterMiddleware\RateLimit; RateLimiterMiddleware::perSecond(3, new RateLimiterStore());
测试
composer test
更新日志
有关最近更改的更多信息,请参阅更新日志。
贡献
有关详细信息,请参阅贡献指南。
安全漏洞
请查看我们的安全策略,了解如何报告安全漏洞。
致谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。