go - Go 上的 API 速率限制
问题描述
我有一个如下所示的 routes.go 文件:
func GetRouter(services Servicesr) *mux.Router {
router := mux.NewRouter()
router.HandleFunc("/api/)
return router
}
我想限制我的/api/services,我正在尝试做这样的事情:
在 limiter.go 我有这个:
package limiter
import (
"golang.org/x/time/rate"
"net/http"
)
var limiter = rate.NewLimiter(1, 3)
func Limit(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if limiter.Allow() == false {
http.Error(w, http.StatusText(429), http.StatusTooManyRequests)
return
}
next.ServeHTTP(w, r)
})
}
但我似乎无法理解如何对 API/服务的 router.HandlerFunc 进行速率限制
解决方案
router.HandleFunc
将for 行更改为api/services
以下内容:
router.Handle("/api/services", Limit(http.HandlerFunc(services.GetServices))).Methods(http.MethodGet)
推荐阅读
- node.js - 如何使用 cqrs 模块在 nestjs 中进行查询?
- lighttable - Lighttable 中的字体显示不正确
- ios - NSDateFormat 是什么 1991-07-26T05:45:50.163
- mongodb - 提高 MongoDB 上聚合查询的性能
- java - JOOQ - 如何创建主键
- c# - 玩家死亡后将多个游戏对象移动/重生到原始位置
- c# - 将数据从 C# 表单发送到节点服务器 socket.io
- obiee - 代理的接收者取决于 OBIEE 中的分析
- ios - Swift 函数停止运行?
- javascript - Javascript/Jquery 不会从 html 中的文件加载