## 路由限流
对于 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"),
```
- 序言
- 基础
- 安装GoHub
- 目录结构
- 开发规范
- 部署项目
- 架构
- 架构总览
- 生命周期
- 配置
- 配置介绍
- 配置目录
- 配置格式
- 配置加载
- 读取配置
- 动态配置
- 环境变量配置
- 路由
- 路由模式
- 路由定义
- 路由参数
- 路由分组
- 路由限流
- 路由拆分
- 控制器
- 控制定义
- 控制器初始化
- 中间件
- Make创建控制器
- 请求
- 请求信息
- 数据库
- 连接数据库
- 基本使用
- Make创建模型
- 日志
- 介绍
- 日志驱动
- 日志写入
- HTTP日志
- 数据库请求日志
- 错误和调试
- Debuger调试器
- 验证
- 验证器
- 验证规则
- Make创建验证器
- 杂项
- 缓存
- 分页
- 验证码
- CURL请求
- 命令行
- 基础知识
- console 包
- Cobra 基础
- 命令行模式
- 附录
- 配置参考
- 第三方依赖库