简单易用还带黑魔法的 Go HTTP 客户端

GitHub Repo stars GitHub Releases Mentioned in Awesome Go

简单而强大

简单易用,提供请求级别和客户端级别的丰富设置,且全是可链式调用的方法

易于调试

提供强大且便捷的调试能力,包含 Debug 日志,性能追踪与分析,甚至将完整请求和响应内容 dump 下来 (参考 调试)

测试 API 很容易

可以用最少的代码进行 API 测试,不需要显式创建任何 Request 和 Client,甚至不需要处理错误 (参考 HTTP 快速测试)

默认就很智能

嗅探并自动解码成 UTF-8 以避免乱码 (参考 自动解码),根据 Content-Type 自动 Marshal 请求体和 Unmarshal 响应体

支持多种 HTTP 版本

同时支持 HTTP/1.1, HTTP/2 和 HTTP/3, 可以自动检测服务端并选择最优 HTTP 协议版本进行请求,当然如果需要也可以强制指定协议版本 (参考 强制指定 HTTP 协议)

支持自动重试

支持请求自动重试,并且完全可自定义 (参考 自动重试)

上传下载很容易

用很简单的设置就可以轻松进行上传和下载,甚至还支持设置回调来显示进度 (参考 下载上传)

易与已有项目集成

req.Transport 是可导出的,相比 http.Transport 它还支持 HTTP3、dump 请求内容、中间件等,可直接替换已有项目中 http.Client 的 Transport,用最少的改动获得更强大的功能

可扩展

支持 Request、Response、Client 和 Transport 的中间件 (参考 Request 与 Response 中间件Client 与 Transport 中间件)