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)
}
posted @ 2022-05-15 00:37  NetRookieX  阅读(15)  评论(0编辑  收藏  举报