企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 路由限流 对于 API 来讲,限流非常重要。 限流就是控制用户访问接口的频率,例如未授权的接口 Github API 每小时最多 60 个请求(根据 IP),而授权以后的接口限流可以到 1000 个请求。 限流不仅可以保护我们的服务器资源不被黑客滥用,在例如说登录接口或者发送验证码接口上,还可以做到防止黑客暴力破解的作用。 此功能在`中间件 limit.go`基础上实现,可能现在还不是很理解,没关系后面会再详细的说明。 ## 限流器 限流是很常用的功能,项目中使用这个开源的限流器[github.com/ulule/limiter](https://github.com/ulule/limiter) 简单的路由组限流实现: ``` // 测试一个 v1 的路由组,我们所有的 v1 版本的路由都将存放到这里 v1 := r.Group("/v1") // 全局限流中间件:每小时限流。这里是所有 API (根据 IP)请求加起来。 // 作为参考 Github API 每小时最多 60 个请求(根据 IP)。 // 测试时,可以调高一点。 v1.Use(middlewares.LimitIP("200-H")) ``` 单个的接口限流实现: ``` // 每小时最多 20个请求(根据 IP) v1.POST("/index", middlewares.LimitPerRoute("20-H"), ```