GET、POST、PUT、DELETE、HEAD、PATCH、OPTIONS等简单且可链式调用的设置和请求方法。 请求体可以是字符串、[]byte、结构体、map、切片和io.Reader。 自动检测Content-Type。 对于io.Reader,无需缓冲处理。 通过Request.RawRequest,在中间件和请求执行期间可以访问原生的*http.Request实例。 可以通过Request.RawRequest.GetBody()多次读取请求体。 响应对象提供更多可能性。 作为[]byte数组访问-响应.Body()或作为字符串访问-响应.String()。 了解响应时间(response.Time())以及响应时刻(response.ReceivedAt())。 JSON和XML内容类型的自动编组和解组。 如果您提供没有标题Content-Type的struct/map,则默认为JSON。 有关自动解组,请参考- 成功情况下Request.SetResult()和Response.Result()。 错误情况下Request.SetError()和Response.Error()。 支持RFC7807-application/problem+json和application/problem+xml。 Resty提供覆盖JSON Marshal/Unmarshal和XML Marshal/Unmarshal的选项。 通过multipart/form-data轻松上传一个或多个文件。 自动检测文件内容类型。 请求URL路径参数(也称为URI参数)。 带有重试条件函数引用的Backoff重试机制。 Resty客户端HTTP和REST请求和响应中间件。 支持Request.SetContext。 BasicAuth和Bearer令牌的授权选项。 为所有请求或特定请求设置请求ContentLength值。 自定义根证书和客户端证书。 直接将HTTP响应下载/保存到文件中,类似于curl -o标志。请参阅SetOutputDirectory和SetOutput。 您的请求和CookieJar支持Cookie。 基于SRV记录的请求,而不是主机URL。 客户端设置,如Timeout、RedirectPolicy、Proxy、TLSClientConfig、Transport等。 可选地允许使用负载进行GET请求,请参见SetAllowGetMethodPayload。 支持向resty注册外部JSON库,详见如何使用。 如果需要,可以公开响应读取器而不读取响应(无自动解组),详见如何使用。 当响应Content-Type头缺失时,指定预期Content-Type的选项。参见#92。 Resty设计 如果需要,可以在客户端级别设置和覆盖请求级别。 请求和响应中间件 如果需要,可以创建多个客户端resty.New()。 支持http.RoundTripper实现,请参见SetTransport。 goroutine并发安全。 Resty客户端跟踪,请参见Client.EnableTrace和Request.EnableTrace。 从v2.4.0开始,跟踪信息包含一个RequestAttempt值,Request对象包含一个Attempt属性。 调试模式-干净且信息丰富的日志演示。 Gzip- Go会自动处理,resty也有回退处理。 与HTTP/2和HTTP/1.1配合良好。 Bazel支持 轻松模拟Resty进行测试,例如。 经过充分测试的客户端库。