Tollbooth

Tollbooth介绍

这是一个限制HTTP请求次数的中间件,该库被认为已完成。主要版本更改是向后不兼容的.v2.0.0简化了旧API

  • v1.0.0:此版本维护旧API,但所有第三方模块都移动到他们自己的repo
  • v2.x.x:全新的API,用于代码清理,线程安全和自动过期的数据结构。
  • v3.x.x:显然我们一直在使用golang.org/x/time/rate。 见问题#48。它始终限制每1秒的X数。持续时间不可更改,因此将TTL传递给tollbooth是没有意义的。

目录结构

主目录limitHandler

  1. —— main.go

代码示例

main.go

  1. package main
  2. import (
  3. "github.com/kataras/iris"
  4. "github.com/didip/tollbooth"
  5. "github.com/iris-contrib/middleware/tollboothic"
  6. )
  7. // $ go get github.com/didip/tollbooth
  8. // $ go run main.go
  9. func main() {
  10. app := iris.New()
  11. limiter := tollbooth.NewLimiter(1, nil)
  12. //或使用可过期的token buckets创建限制器
  13. //此设置表示:
  14. //创建1 request/second限制器和
  15. //其中的每个token bucket将在最初设置后1小时到期。
  16. // limiter := tollbooth.NewLimiter(1, &limiter.ExpirableOptions{DefaultExpirationTTL: time.Hour})
  17. app.Get("/", tollboothic.LimitHandler(limiter), func(ctx iris.Context) {
  18. ctx.HTML("<b>Hello, world!</b>")
  19. })
  20. app.Run(iris.Addr(":8080"))
  21. }
  22. //阅读更多信息:https://github.com/didip/tollbooth