开源项目 `ulule/limiter` 使用教程

开源项目 ulule/limiter 使用教程

limiterDead simple rate limit middleware for Go.项目地址:https://gitcode.com/gh_mirrors/li/limiter

1. 项目的目录结构及介绍

ulule/limiter
├── examples
│   ├── basic.go
│   ├── context.go
│   ├── fasthttp.go
│   ├── gin.go
│   ├── gorilla.go
│   ├── http.go
│   ├── iris.go
│   ├── negroni.go
│   └── echo.go
├── limiter
│   ├── limiter.go
│   ├── middleware.go
│   ├── store.go
│   ├── store_memory.go
│   ├── store_redis.go
│   └── store_redis_cluster.go
├── README.md
└── go.mod
  • examples: 包含各种框架的示例代码,如 gin, echo, fasthttp 等。
  • limiter: 核心代码目录,包含限流器的实现和中间件。
    • limiter.go: 限流器的主要逻辑。
    • middleware.go: 中间件的实现。
    • store.go: 存储接口定义。
    • store_memory.go: 内存存储实现。
    • store_redis.go: Redis 存储实现。
    • store_redis_cluster.go: Redis 集群存储实现。
  • README.md: 项目说明文档。
  • go.mod: Go 模块文件。

2. 项目的启动文件介绍

项目的启动文件通常位于 examples 目录下,根据使用的框架不同,选择相应的示例文件。例如,使用 gin 框架时,启动文件为 examples/gin.go

package main

import (
	"time"

	"github.com/gin-gonic/gin"
	"github.com/ulule/limiter/v3"
	"github.com/ulule/limiter/v3/drivers/middleware/gin"
	"github.com/ulule/limiter/v3/drivers/store/memory"
)

func main() {
	router := gin.Default()

	// 创建限流器
	rate := limiter.Rate{
		Period: 1 * time.Minute,
		Limit:  100,
	}
	store := memory.NewStore()
	instance := limiter.New(store, rate)

	// 添加中间件
	router.Use(limiter.NewMiddleware(instance))

	router.GET("/", func(c *gin.Context) {
		c.String(200, "Hello, World!")
	})

	router.Run(":8080")
}

3. 项目的配置文件介绍

项目本身没有独立的配置文件,配置主要通过代码进行。例如,在 examples/gin.go 中,限流器的配置如下:

rate := limiter.Rate{
	Period: 1 * time.Minute,
	Limit:  100,
}
store := memory.NewStore()
instance := limiter.New(store, rate)
  • Period: 限流周期,这里是 1 分钟。
  • Limit: 周期内的请求限制,这里是 100 次。
  • store: 存储后端,这里是内存存储。

通过这些配置,可以灵活地调整限流器的参数以适应不同的需求。

limiterDead simple rate limit middleware for Go.项目地址:https://gitcode.com/gh_mirrors/li/limiter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贡锨庆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值