一架梯子,一头程序猿,仰望星空!
Go Resty教程 > 内容正文

Go Resty介绍


Go Resty是一个用于构建RESTful API客户端的Go语言库。它提供了一套简洁而强大的API,使开发人员能够轻松地发送HTTP请求并处理响应。

功能特点

  • 支持GET、POST、PUT、DELETE、HEAD、PATCH、OPTIONS等请求方法
  • 简单且可链式调用的设置和请求方法
  • Request的Body可以是string[]bytestructmapsliceio.Reader
    • 自动检测Content-Type
    • 对于io.Reader,使用无缓冲方式处理
    • 在中间件和请求执行过程中,可以通过Request.RawRequest访问原生的*http.Request实例
    • 通过Request.RawRequest.GetBody()可多次读取请求Body
  • Response对象提供更多可能性
    • 将响应以[]byte数组形式访问 - response.Body(),或以string形式访问 - response.String()
    • 获取响应的response.Time()和接收时间response.ReceivedAt()
  • 自动进行JSONXML内容类型的编码和解码
    • 默认为JSON,如果未提供Content-Type头部和struct/map参数
    • Resty提供了覆盖JSON编码/解码和XML编码/解码的选项
  • 通过multipart/form-data上传一个或多个文件很简单
    • 自动检测文件的内容类型
  • 使用退避重试机制和重试条件函数引用
  • Resty客户端支持HTTP和REST请求的中间件,包括Request和Response
  • 支持Request.SetContext
  • 支持BasicAuthBearer令牌的授权选项
  • 为所有请求或特定请求设置请求ContentLength
  • 自定义根证书和客户端证书
  • 直接将HTTP响应下载/保存到文件,类似于curl -o命令的功能。
  • 请求和CookieJar支持的Cookie
  • 基于SRV记录的请求,而不是基于主机URL
  • 客户端设置,如TimeoutRedirectPolicyProxyTLSClientConfigTransport
  • Resty设计
    • 在客户端级别设置和选择,也可以在请求级别进行覆盖
    • 请求和响应的中间件
    • 如果需要,可以创建多个客户端,使用resty.New()
  • goroutine 并发安全
  • 调试模式 - 清晰和丰富的日志展示
  • Gzip - Go 自动处理,Resty也具备回退处理能力
  • HTTP/2HTTP/1.1 兼容
  • Bazel 支持
  • 对于测试提供易于模拟的 Resty

支持的 Go 版本

建议使用 go1.16 及以上版本。

v1.10.0 版本开始,Resty 开始支持 go modules

从 Resty v2 版本及更高版本开始,完全支持 go modules 包发布。它要求使用一个可理解 /vN 后缀导入的 Go 版本:

  • 1.9.7+
  • 1.10.3+
  • 1.11+