限流器使用中间件完成

This commit is contained in:
2025-05-08 11:37:34 +08:00
parent bfbcecb498
commit 4767aeb504
3 changed files with 27 additions and 15 deletions

View File

@ -75,12 +75,25 @@ func initRequestConfig(reqConfig *define.Request) {
// Author : go_developer@163.com<白茶清欢>
//
// Date : 15:00 2024/5/31
func NewRestyClient(reqConfig *define.Request) (*resty.Client, *resty.Request) {
func NewRestyClient(reqConfig *define.Request, reqOption *RequestOption) (*resty.Client, *resty.Request) {
client := resty.New()
request := client.R()
if nil == reqConfig {
return client, request
}
// 限流处理, 增加限流中间件
client.AddRequestMiddleware(func(client *resty.Client, request *resty.Request) error {
if nil != reqOption && nil != reqOption.RateLimiter {
// 未配置流控
return nil
}
if !reqOption.RateLimiter.Allow() {
// 命中流控
return define.ErrRateLimitExceeded
}
return nil
})
initRequestConfig(reqConfig) // 初始化 + 格式化配置
client.SetAllowMethodGetPayload(true) // 配置 GET 请求允许带 Body
client.SetAllowMethodDeletePayload(true) // 配置 DELETE 请求允许带 Body