# rate-limit-bundle **Repository Path**: yansongda/rate-limit-bundle ## Basic Information - **Project Name**: rate-limit-bundle - **Description**: 限流服务 for symfony 4 - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2018-12-11 - **Last Updated**: 2024-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Rate-Limit-Bundle

主要提供了路由限流功能,限流的参数可由自定义函数动态进行控制 ## 运行环境 - php 7.1+ - symfony 4 - composer - redis ## 功能 - 静态限流 - 动态限流 - 根据 ip + 路由 进行限制 ## 安装 `composer require yansongda/rate-limit-bundle -vvv` ## 概要 根据 IP + 路由名 进行确定特定的客户端,通过 redis 进行限流记录。 ## 使用 ### 静态限流 ```php * * @Route("/test", name="test") * @Throttle(limit=2, period=60) * * @return mixed */ public function testAction() { return JsonResponse::create(['code' => 0]); } } ``` ### 动态限流 ```php * * @Route("/test", name="token") * @Throttle(limit=2, period=60, custom={"App\Throttles\CustomLimitPeriod", "token"}) * * @return mixed */ public function tokenAction() { return JsonResponse::create(['code' => 0]); } } ``` ```php * @param Request $request 此参数回调时自动载入 * * @return array */ public function token(Request $request) { // 返回的数据中,第一个为 limit,第二个为 period,必须为 int 类型。如果 limit 返回 -1 则无限制 return [20, 60]; } } ``` ## 配置 下面是默认的配置信息。如果需要更改,在 config 的 packages 目录下新建一个 yml 文件,然后复制以下内容更改即可。 ```yaml yansongda_rate_limit: # 是否开启 enable: true # snc_redis 客户端 redis_client: default # 是否展示 headers display_headers: true # headers 的 key headers: limit: X-RateLimit-Limit remaining: X-RateLimit-Remaining reset: X-RateLimit-Reset # response 内容,如果 exception 不为 null,则默认抛出写入的 exception response: message: 'Out Of Limit' code: 429 exception: null ```