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 @   NetRookieX  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示