## 路由限流
對于 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 基礎
- 命令行模式
- 附錄
- 配置參考
- 第三方依賴庫