Golang支持重试的http客户端ghttp
简介
官方仓库:https://github.com/GuoFlight/ghttp
重试的逻辑依赖了github.com/avast/retry-go
入门
client := ghttp.Client{
Method: ghttp.MethodGet,
Url: "https://www.baidu.com",
}
res, err := client.Do()
if err != nil {
fmt.Println(err)
return
}
fmt.Println(res.Detail.StatusCode) //输出状态码
请求失败则自动重试
package main
import (
"errors"
"fmt"
"github.com/GuoFlight/ghttp"
"github.com/avast/retry-go"
)
func main() {
client := ghttp.Client{
Method: ghttp.MethodGet,
Url: "https://www.baidu.com",
Retry: ghttp.Retry{
JudgeRetryFunc: func(res *ghttp.Res) error {
return errors.New("error") //模拟错误
},
Options: []retry.Option{
retry.Attempts(2), //最多重试2次
},
},
}
res, err := client.Do()
if err != nil {
fmt.Println(err)
return
}
fmt.Println(res.Detail.StatusCode)
}