teemo

package module
v1.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 26, 2026 License: Apache-2.0 Imports: 17 Imported by: 0

README

teemo

介绍

teemo 是一个高效、易用的 Go 语言 HTTP 客户端库,专为简化日常 HTTP 请求、微服务通信和第三方 API 对接而设计。

主要特性:

  • 泛型支持,响应类型灵活
  • 链式调用,API 简洁直观
  • 支持 POST、GET、PUT、DELETE 等常用请求方式
  • 请求头、参数、Body 支持多种格式自动转换
  • 全局与自定义日志系统,便于调试与监控
  • 统一错误处理,内置常见 HTTP 状态码映射
  • 基于高性能 resty 库,兼容性与扩展性强

适用场景:

  • 微服务间 HTTP 通信
  • 第三方 API 对接
  • 自动化测试、Mock 服务调用
  • 需要灵活扩展和统一日志、错误处理的 HTTP 客户端场景

优势:

  • API 设计简洁,易于上手
  • 支持高度自定义与扩展
  • 代码结构清晰,易于维护
  • 兼容社区主流库 resty,性能优异
软件架构

teemo 采用模块化设计,核心架构如下:

  • Client:HTTP 客户端实例,负责全局配置(如超时、日志、重试等)
  • Request:泛型请求对象,支持链式设置请求头、参数、Body,并发起请求
  • Logger:日志模块,支持全局与自定义日志级别,便于调试和慢请求监控

主要调用流程:

  1. 通过 teemo.New() 创建 Client 实例(可选配置)
  2. 通过 teemo.NewRequest[T](client) 创建请求对象,链式设置参数
  3. 调用 PostGetPutDelete 等方法发起请求
  4. 自动解析响应为泛型类型,统一处理错误和日志
安装教程
go get -u git gitee.com/damengde/teemo
使用说明
import (
	"context"
	"fmt"
	"gitee.com/damengde/teemo"
)

type commResp struct {
	Code int    `json:"code"`
	Msg  string `json:"msg"`
}

// 发送 POST 请求示例
func postExample() {
	url := "http://localhost:8080/test"
	body := `{"param":"123"}`
	headers := map[string]string{"Content-Type": "application/json"}
	resp, err := teemo.SendHttpPostRequest[commResp](context.TODO(), url, headers, body)
	if err != nil {
		panic(err)
	}
	fmt.Println("POST响应:", resp)
}

// 发送 GET 请求示例
func getExample() {
	url := "http://localhost:8080/test"
	queryParams := struct {
		Param string `json:"param"`
	}{Param: "test"}
	headers := map[string]string{"Content-Type": "application/json"}
	resp, err := teemo.SendHttpGetRequest[commResp](context.TODO(), url, headers, queryParams)
	if err != nil {
		panic(err)
	}
	fmt.Println("GET响应:", resp)
}

// 发送 PUT 请求示例
func putExample() {
	url := "http://localhost:8080/test"
	body := `{"param":"123"}`
	headers := map[string]string{"Content-Type": "application/json"}
	resp, err := teemo.SendHttpPutRequest[commResp](context.TODO(), url, headers, body)
	if err != nil {
		panic(err)
	}
	fmt.Println("PUT响应:", resp)
}

// 发送 DELETE 请求示例
func deleteExample() {
	url := "http://localhost:8080/test"
	body := `{"param":"123"}`
	headers := map[string]string{"Content-Type": "application/json"}
	resp, err := teemo.SendHttpDeleteRequest[commResp](context.TODO(), url, headers, body)
	if err != nil {
		panic(err)
	}
	fmt.Println("DELETE响应:", resp)
}

// 发送 multipart/form-data 文件上传请求示例
func postMultipartExample() {
	url := "http://localhost:8080/upload"
	headers := map[string]string{"Authorization": "Bearer token"}

	// 方式一:使用 []byte
	fileBytes := []byte("%PDF-1.4 mock content%")
	filePart, err := teemo.NewMultipartFileFromBytes("file", "test.pdf", fileBytes)
	if err != nil {
		panic(err)
	}

	resp, err := teemo.SendHttpPostMultipartRequest[commResp](
		context.TODO(),
		url,
		headers,
		teemo.MultipartRequestData{
			FormFields: struct {
				Name string `json:"name"`
			}{Name: "test"},
			Files: []teemo.MultipartFile{filePart},
		},
	)
	if err != nil {
		panic(err)
	}
	fmt.Println("上传响应:", resp)
}

Documentation

Index

Constants

View Source
const (
	HttpStatus400Error = "bad request"
	HttpStatus401Error = "unauthorized"
	HttpStatus403Error = "forbidden"
	HttpStatus404Error = "not found"
	HttpStatus405Error = "method not allowed"
	HttpStatus408Error = "request timeout"
	HttpStatus429Error = "too many requests"
	HttpStatus500Error = "internal server error"
	HttpStatus502Error = "bad gateway"
	HttpStatus503Error = "service unavailable"
	HttpStatus504Error = "gateway timeout"
)

HTTP状态码对应的错误信息

Variables

This section is empty.

Functions

func GetRequestID added in v1.2.2

func GetRequestID(ctx context.Context) string

GetRequestID 获取上下文中的 RequestID。 ctx: 上下文对象。 返回值: RequestID 字符串,若不存在则返回空字符串。

func GetTraceID added in v1.2.2

func GetTraceID(ctx context.Context) string

GetTraceID 获取上下文中的 TraceID。 ctx: 上下文对象。 返回值: TraceID 字符串,若不存在则返回空字符串。

func SendHttpDeleteRequest added in v1.2.0

func SendHttpDeleteRequest[T any](ctx context.Context, url string, headers interface{}, data interface{}) (result T, err error)

SendHttpDeleteRequest 发送一个 HTTP DELETE 请求,自动创建客户端并发起请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func SendHttpDownloadFile added in v1.2.2

func SendHttpDownloadFile(ctx context.Context, url string, headers interface{}, filePath string, queryParams interface{}) error

SendHttpDownloadFile 下载文件并保存到本地。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 filePath: 保存路径。 queryParams: 查询参数。 返回值: error 错误信息。

func SendHttpGetRequest

func SendHttpGetRequest[T any](ctx context.Context, url string, headers interface{}, data interface{}) (result T, err error)

SendHttpGetRequest 发送一个 HTTP GET 请求,自动创建客户端并发起请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 查询参数(结构体、map等,自动转换为 query string)。 返回值: 泛型 T 的响应结果,error 错误信息。

func SendHttpOptionsRequest added in v1.2.2

func SendHttpOptionsRequest[T any](ctx context.Context, url string, headers interface{}, data interface{}) (result T, err error)

SendHttpOptionsRequest 发送一个 HTTP OPTIONS 请求,自动创建客户端并发起请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 查询参数。 返回值: 泛型 T 的响应结果,error 错误信息。

func SendHttpPatchFormRequest added in v1.2.2

func SendHttpPatchFormRequest[T any](ctx context.Context, url string, headers interface{}, data interface{}) (result T, err error)

SendHttpPatchFormRequest 发送 application/x-www-form-urlencoded PATCH 请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 表单数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func SendHttpPatchRawRequest added in v1.2.2

func SendHttpPatchRawRequest[T any](ctx context.Context, url string, headers interface{}, data interface{}) (result T, err error)

SendHttpPatchRawRequest 发送原始数据 PATCH 请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func SendHttpPatchRequest added in v1.2.2

func SendHttpPatchRequest[T any](ctx context.Context, url string, headers interface{}, data interface{}) (result T, err error)

SendHttpPatchRequest 发送一个 HTTP PATCH 请求,自动创建客户端并发起请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func SendHttpPatchXMLRequest added in v1.2.2

func SendHttpPatchXMLRequest[T any](ctx context.Context, url string, headers interface{}, data interface{}) (result T, err error)

SendHttpPatchXMLRequest 发送 application/xml PATCH 请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func SendHttpPostFormRequest added in v1.2.2

func SendHttpPostFormRequest[T any](ctx context.Context, url string, headers interface{}, data interface{}) (result T, err error)

SendHttpPostFormRequest 发送 application/x-www-form-urlencoded POST 请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 表单数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func SendHttpPostMultipartRequest added in v1.2.2

func SendHttpPostMultipartRequest[T any](ctx context.Context, url string, headers interface{}, data MultipartRequestData) (result T, err error)

SendHttpPostMultipartRequest 发送一个 multipart/form-data 的 HTTP POST 请求,自动创建客户端并发起请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: multipart 请求数据(文本字段与文件字段)。 返回值: 泛型 T 的响应结果,error 错误信息。

func SendHttpPostRawRequest added in v1.2.2

func SendHttpPostRawRequest[T any](ctx context.Context, url string, headers interface{}, data interface{}) (result T, err error)

SendHttpPostRawRequest 发送原始数据 POST 请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func SendHttpPostRequest

func SendHttpPostRequest[T any](ctx context.Context, url string, headers interface{}, data interface{}) (result T, err error)

SendHttpPostRequest 发送一个 HTTP POST 请求,自动创建客户端并发起请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func SendHttpPostXMLRequest added in v1.2.2

func SendHttpPostXMLRequest[T any](ctx context.Context, url string, headers interface{}, data interface{}) (result T, err error)

SendHttpPostXMLRequest 发送 application/xml POST 请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func SendHttpPutFormRequest added in v1.2.2

func SendHttpPutFormRequest[T any](ctx context.Context, url string, headers interface{}, data interface{}) (result T, err error)

SendHttpPutFormRequest 发送 application/x-www-form-urlencoded PUT 请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 表单数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func SendHttpPutRawRequest added in v1.2.2

func SendHttpPutRawRequest[T any](ctx context.Context, url string, headers interface{}, data interface{}) (result T, err error)

SendHttpPutRawRequest 发送原始数据 PUT 请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func SendHttpPutRequest added in v1.2.0

func SendHttpPutRequest[T any](ctx context.Context, url string, headers interface{}, data interface{}) (result T, err error)

SendHttpPutRequest 发送一个 HTTP PUT 请求,自动创建客户端并发起请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func SendHttpPutXMLRequest added in v1.2.2

func SendHttpPutXMLRequest[T any](ctx context.Context, url string, headers interface{}, data interface{}) (result T, err error)

SendHttpPutXMLRequest 发送 application/xml PUT 请求。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func SetGlobalLogLevel added in v1.1.0

func SetGlobalLogLevel(level LogLevel)

SetGlobalLogLevel 设置全局日志级别

func SetGlobalLogger added in v1.1.0

func SetGlobalLogger(logger Logger)

SetGlobalLogger 设置全局日志记录器

func StructJsonTagToStrMap

func StructJsonTagToStrMap(obj interface{}) (map[string]string, error)

func WithRequestID added in v1.2.2

func WithRequestID(ctx context.Context, requestID string) context.Context

WithRequestID 设置 RequestID 到上下文。 ctx: 上下文对象。 requestID: RequestID 值。 返回值: 新的上下文对象。

func WithTraceID added in v1.2.2

func WithTraceID(ctx context.Context, traceID string) context.Context

WithTraceID 设置 TraceID 到上下文。 ctx: 上下文对象。 traceID: TraceID 值。 返回值: 新的上下文对象。

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client 封装了底层 resty.Client、日志和调试配置,是 HTTP 请求的核心客户端。

func New added in v1.0.0

func New(options ...ClientOption) *Client

New 创建一个新的 HTTP 客户端实例,可通过可选参数自定义超时、日志等配置。 options: 可选的客户端配置函数(如 WithTimeout、WithLogger 等)。 返回值: *Client 新的客户端实例。

type ClientOption added in v1.1.0

type ClientOption func(*Client)

ClientOption 定义客户端配置函数类型,用于自定义 Client 行为。

func WithBaseURL added in v1.1.0

func WithBaseURL(url string) ClientOption

WithBaseURL 设置基础请求地址,后续请求将自动拼接。 url: 基础 URL。 返回值: ClientOption,可用于 New 创建客户端时传入。

func WithDebug added in v1.1.0

func WithDebug() ClientOption

WithDebug 启用调试模式,日志级别自动提升为 Debug。 返回值: ClientOption,可用于 New 创建客户端时传入。

func WithLogger added in v1.1.0

func WithLogger(logger Logger) ClientOption

WithLogger 设置自定义日志记录器。 logger: 实现 Logger 接口的日志对象。 返回值: ClientOption,可用于 New 创建客户端时传入。

func WithRequestHooks added in v1.2.2

func WithRequestHooks(hooks ...RequestHook) ClientOption

WithRequestHooks 设置请求前置 Hook。 hooks: 请求前置 Hook 列表。 返回值: ClientOption,可用于 New 创建客户端时传入。

func WithRequestMiddlewares added in v1.2.2

func WithRequestMiddlewares(middlewares ...RequestMiddleware) ClientOption

WithRequestMiddlewares 设置请求中间件。 middlewares: 中间件列表。 返回值: ClientOption,可用于 New 创建客户端时传入。

func WithResponseHooks added in v1.2.2

func WithResponseHooks(hooks ...ResponseHook) ClientOption

WithResponseHooks 设置响应后置 Hook。 hooks: 响应后置 Hook 列表。 返回值: ClientOption,可用于 New 创建客户端时传入。

func WithRetryAfter added in v1.2.2

func WithRetryAfter(retryAfter resty.RetryAfterFunc) ClientOption

WithRetryAfter 设置重试退避策略。 retryAfter: 重试等待计算函数。 返回值: ClientOption,可用于 New 创建客户端时传入。

func WithRetryConditions added in v1.2.2

func WithRetryConditions(conditions ...resty.RetryConditionFunc) ClientOption

WithRetryConditions 设置重试条件。 conditions: 重试条件列表。 返回值: ClientOption,可用于 New 创建客户端时传入。

func WithRetryCount added in v1.1.0

func WithRetryCount(count int) ClientOption

WithRetryCount 设置请求重试次数。 count: 重试次数。 返回值: ClientOption,可用于 New 创建客户端时传入。

func WithRetryMaxWaitTime added in v1.2.2

func WithRetryMaxWaitTime(maxWaitTime time.Duration) ClientOption

WithRetryMaxWaitTime 设置重试最大等待时间。 maxWaitTime: 最大等待时长。 返回值: ClientOption,可用于 New 创建客户端时传入。

func WithRetryResetReaders added in v1.2.2

func WithRetryResetReaders(enabled bool) ClientOption

WithRetryResetReaders 设置重试时是否重置 multipart 读取器。 enabled: 是否启用重置。 返回值: ClientOption,可用于 New 创建客户端时传入。

func WithRetryWaitTime added in v1.2.2

func WithRetryWaitTime(waitTime time.Duration) ClientOption

WithRetryWaitTime 设置重试等待时间。 waitTime: 重试等待时长。 返回值: ClientOption,可用于 New 创建客户端时传入。

func WithTimeout added in v1.1.0

func WithTimeout(timeout time.Duration) ClientOption

WithTimeout 设置 HTTP 客户端超时时间。 timeout: 超时时长。 返回值: ClientOption,可用于 New 创建客户端时传入。

type DefaultLogger added in v1.1.0

type DefaultLogger struct {
	// contains filtered or unexported fields
}

DefaultLogger 实现默认的日志记录功能

func NewDefaultLogger added in v1.1.0

func NewDefaultLogger() *DefaultLogger

NewDefaultLogger 创建并返回一个新的默认日志记录器 默认日志级别为 Info,慢请求阈值为 60 秒

func (*DefaultLogger) Debugf added in v1.1.1

func (l *DefaultLogger) Debugf(ctx context.Context, msg string, args ...interface{})

Debugf 记录调试级别的日志信息 仅当日志级别大于等于 Debug 时才会输出

func (*DefaultLogger) Errorf added in v1.1.1

func (l *DefaultLogger) Errorf(ctx context.Context, msg string, args ...interface{})

Errorf 记录错误级别的日志 仅当日志级别大于等于 Error 时才会输出

func (*DefaultLogger) Infof added in v1.1.1

func (l *DefaultLogger) Infof(ctx context.Context, msg string, args ...interface{})

Infof 记录信息级别的日志 仅当日志级别大于等于 Info 时才会输出

func (*DefaultLogger) LogMode added in v1.1.0

func (l *DefaultLogger) LogMode(level LogLevel) Logger

LogMode 设置日志级别并返回新的日志记录器实例 该方法不会修改原有记录器的设置

func (*DefaultLogger) Slowf added in v1.1.1

func (l *DefaultLogger) Slowf(ctx context.Context, begin time.Time, url string)

Slowf 记录慢请求信息 当请求处理时间超过设定的阈值时,输出详细的请求信息 包括请求时间、处理耗时和请求URL

type Errors

type Errors map[int]error

Errors 定义HTTP状态码到错误的映射

var ErrorMap Errors

ErrorMap 全局错误映射实例

func (Errors) Get

func (e Errors) Get(status int) error

Get 根据HTTP状态码获取对应的错误 如果状态码未定义,则返回通用错误信息

type LogContextKey added in v1.2.2

type LogContextKey string

LogContextKey 定义日志上下文的键类型。

const (
	// TraceIDContextKey TraceID 上下文键
	TraceIDContextKey LogContextKey = "traceId"
	// RequestIDContextKey RequestID 上下文键
	RequestIDContextKey LogContextKey = "requestId"
)

type LogLevel added in v1.1.0

type LogLevel int

LogLevel log level LogLevel 定义日志级别类型,用于控制日志输出的详细程度

const (
	// Silent 静默级别 - 不输出任何日志
	Silent LogLevel = iota + 1
	// Error 错误级别 - 仅输出错误日志
	Error
	// Info 信息级别 - 输出信息、警告和错误日志
	Info
	// Debug 调试级别 - 输出信息、警告、错误和调试日志
	Debug
)

type Logger added in v1.1.0

type Logger interface {
	// LogMode 设置日志级别并返回新的日志记录器
	LogMode(LogLevel) Logger
	// Infof 记录信息级别的日志,支持格式化输出
	Infof(context.Context, string, ...interface{})
	// Errorf 记录错误级别的日志,支持格式化输出
	Errorf(context.Context, string, ...interface{})
	// Slowf 记录慢请求信息,包含请求开始时间和URL
	Slowf(ctx context.Context, begin time.Time, url string)
	// Debugf 记录调试级别的日志,支持格式化输出
	Debugf(ctx context.Context, msg string, args ...interface{})
}

Logger 定义日志接口,提供不同级别的日志记录功能

type MultipartFile added in v1.2.2

type MultipartFile struct {
	FieldName string
	FileName  string
	Reader    io.Reader
	// contains filtered or unexported fields
}

MultipartFile 定义 multipart/form-data 的文件字段。

func NewMultipartFileFromBytes added in v1.2.2

func NewMultipartFileFromBytes(fieldName string, fileName string, content []byte) (MultipartFile, error)

NewMultipartFileFromBytes 基于字节内容创建文件字段。 fieldName: 表单字段名。 fileName: 文件名。 content: 文件内容。 返回值: MultipartFile 文件字段。 错误: 字段名或文件名为空时返回错误。

func NewMultipartFileFromPath added in v1.2.2

func NewMultipartFileFromPath(fieldName string, filePath string) (MultipartFile, error)

NewMultipartFileFromPath 基于文件路径创建文件字段。 fieldName: 表单字段名。 filePath: 文件路径。 返回值: MultipartFile 文件字段。 错误: 字段名为空或文件打开失败时返回错误。

func NewMultipartFileFromReader added in v1.2.2

func NewMultipartFileFromReader(fieldName string, fileName string, reader io.Reader) (MultipartFile, error)

NewMultipartFileFromReader 基于 Reader 创建文件字段。 fieldName: 表单字段名。 fileName: 文件名。 reader: 文件读取器。 返回值: MultipartFile 文件字段。 错误: 字段名或文件名为空、reader 为空时返回错误。

type MultipartFormField added in v1.2.2

type MultipartFormField struct {
	FieldName  string
	FieldValue string
}

MultipartFormField 定义 multipart/form-data 的文本字段。

type MultipartRequestData added in v1.2.2

type MultipartRequestData struct {
	FormFields any
	Files      []MultipartFile
}

MultipartRequestData 定义 multipart/form-data 的请求数据。

type NetworkError added in v1.2.2

type NetworkError struct {
	Cause error
}

NetworkError 表示网络请求错误。

func (NetworkError) Error added in v1.2.2

func (e NetworkError) Error() string

Error 返回错误信息。

func (NetworkError) Unwrap added in v1.2.2

func (e NetworkError) Unwrap() error

Unwrap 返回原始错误。

type RawResponse added in v1.2.2

type RawResponse struct {
	StatusCode int
	Headers    map[string][]string
	Body       []byte
}

RawResponse 定义原始响应结构。

func SendHttpHeadRequest added in v1.2.2

func SendHttpHeadRequest(ctx context.Context, url string, headers interface{}, data interface{}) (RawResponse, error)

SendHttpHeadRequest 发送一个 HTTP HEAD 请求,自动创建客户端并返回原始响应。 ctx: 上下文对象,用于控制超时和取消。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 查询参数。 返回值: RawResponse 原始响应,error 错误信息。

func SendHttpRawResponseRequest added in v1.2.2

func SendHttpRawResponseRequest(ctx context.Context, method string, url string, headers interface{}, data interface{}) (RawResponse, error)

SendHttpRawResponseRequest 发送请求并返回原始响应。 ctx: 上下文对象,用于控制超时和取消。 method: HTTP 方法。 url: 请求地址。 headers: 请求头(结构体、map等,支持多种格式)。 data: 请求数据。 返回值: RawResponse 原始响应,error 错误信息。

type Request

type Request[T any] struct {
	// contains filtered or unexported fields
}

Request 泛型 HTTP 请求结构体,封装了请求参数、头部、调试开关和日志。 T 为响应体类型,支持泛型解析。

func NewRequest added in v1.0.0

func NewRequest[T any](client *Client) *Request[T]

NewRequest 创建一个新的泛型 HTTP 请求对象。 client: 需要绑定的 Client 实例。 返回值: *Request[T] 泛型请求对象,可链式调用设置参数和发起请求。

func (*Request[T]) AddRequestHooks added in v1.2.2

func (c *Request[T]) AddRequestHooks(hooks ...RequestHook) *Request[T]

AddRequestHooks 添加请求前置 Hook。 hooks: 请求前置 Hook 列表。 返回值: *Request[T] 支持链式调用。

func (*Request[T]) AddResponseHooks added in v1.2.2

func (c *Request[T]) AddResponseHooks(hooks ...ResponseHook) *Request[T]

AddResponseHooks 添加响应后置 Hook。 hooks: 响应后置 Hook 列表。 返回值: *Request[T] 支持链式调用。

func (*Request[T]) Delete added in v1.2.0

func (c *Request[T]) Delete(ctx context.Context, url string, data interface{}) (result T, err error)

Delete 发送 HTTP DELETE 请求。 ctx: 上下文对象。 url: 请求地址。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func (*Request[T]) DownloadFile added in v1.2.2

func (c *Request[T]) DownloadFile(ctx context.Context, url string, filePath string, queryParams interface{}) error

DownloadFile 下载文件并保存到本地。 ctx: 上下文对象。 url: 请求地址。 filePath: 保存路径。 queryParams: 查询参数。 返回值: error 错误信息。

func (*Request[T]) Get

func (c *Request[T]) Get(ctx context.Context, url string, data interface{}) (result T, err error)

Get 发送 HTTP GET 请求。 ctx: 上下文对象。 url: 请求地址。 data: 查询参数(结构体、map等,自动转换为 query string)。 返回值: 泛型 T 的响应结果,error 错误信息。

func (*Request[T]) Head added in v1.2.2

func (c *Request[T]) Head(ctx context.Context, url string, data interface{}) (RawResponse, error)

Head 发送 HTTP HEAD 请求并返回原始响应。 ctx: 上下文对象。 url: 请求地址。 data: 查询参数。 返回值: RawResponse 原始响应,error 错误信息。

func (*Request[T]) Options added in v1.2.2

func (c *Request[T]) Options(ctx context.Context, url string, data interface{}) (result T, err error)

Options 发送 HTTP OPTIONS 请求。 ctx: 上下文对象。 url: 请求地址。 data: 查询参数。 返回值: 泛型 T 的响应结果,error 错误信息。

func (*Request[T]) Patch added in v1.2.2

func (c *Request[T]) Patch(ctx context.Context, url string, data interface{}) (result T, err error)

Patch 发送 HTTP PATCH 请求。 ctx: 上下文对象。 url: 请求地址。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func (*Request[T]) PatchForm added in v1.2.2

func (c *Request[T]) PatchForm(ctx context.Context, url string, data interface{}) (result T, err error)

PatchForm 发送 application/x-www-form-urlencoded PATCH 请求。 ctx: 上下文对象。 url: 请求地址。 data: 表单数据(结构体、map等)。 返回值: 泛型 T 的响应结果,error 错误信息。

func (*Request[T]) PatchRaw added in v1.2.2

func (c *Request[T]) PatchRaw(ctx context.Context, url string, data interface{}) (result T, err error)

PatchRaw 发送原始数据 PATCH 请求。 ctx: 上下文对象。 url: 请求地址。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func (*Request[T]) PatchXML added in v1.2.2

func (c *Request[T]) PatchXML(ctx context.Context, url string, data interface{}) (result T, err error)

PatchXML 发送 application/xml PATCH 请求。 ctx: 上下文对象。 url: 请求地址。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func (*Request[T]) Post

func (c *Request[T]) Post(ctx context.Context, url string, data interface{}) (result T, err error)

Post 发送 HTTP POST 请求。 ctx: 上下文对象。 url: 请求地址。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func (*Request[T]) PostForm added in v1.2.2

func (c *Request[T]) PostForm(ctx context.Context, url string, data interface{}) (result T, err error)

PostForm 发送 application/x-www-form-urlencoded POST 请求。 ctx: 上下文对象。 url: 请求地址。 data: 表单数据(结构体、map等)。 返回值: 泛型 T 的响应结果,error 错误信息。

func (*Request[T]) PostMultipart added in v1.2.2

func (c *Request[T]) PostMultipart(ctx context.Context, url string, data MultipartRequestData) (result T, err error)

PostMultipart 发送 multipart/form-data 的 HTTP POST 请求。 ctx: 上下文对象。 url: 请求地址。 data: multipart 请求数据(文本字段与文件字段)。 返回值: 泛型 T 的响应结果,error 错误信息。 错误: 文件字段为空、字段校验失败或请求异常时返回。

func (*Request[T]) PostRaw added in v1.2.2

func (c *Request[T]) PostRaw(ctx context.Context, url string, data interface{}) (result T, err error)

PostRaw 发送原始数据 POST 请求。 ctx: 上下文对象。 url: 请求地址。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func (*Request[T]) PostXML added in v1.2.2

func (c *Request[T]) PostXML(ctx context.Context, url string, data interface{}) (result T, err error)

PostXML 发送 application/xml POST 请求。 ctx: 上下文对象。 url: 请求地址。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func (*Request[T]) Put added in v1.2.0

func (c *Request[T]) Put(ctx context.Context, url string, data interface{}) (result T, err error)

Put 发送 HTTP PUT 请求。 ctx: 上下文对象。 url: 请求地址。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func (*Request[T]) PutForm added in v1.2.2

func (c *Request[T]) PutForm(ctx context.Context, url string, data interface{}) (result T, err error)

PutForm 发送 application/x-www-form-urlencoded PUT 请求。 ctx: 上下文对象。 url: 请求地址。 data: 表单数据(结构体、map等)。 返回值: 泛型 T 的响应结果,error 错误信息。

func (*Request[T]) PutRaw added in v1.2.2

func (c *Request[T]) PutRaw(ctx context.Context, url string, data interface{}) (result T, err error)

PutRaw 发送原始数据 PUT 请求。 ctx: 上下文对象。 url: 请求地址。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func (*Request[T]) PutXML added in v1.2.2

func (c *Request[T]) PutXML(ctx context.Context, url string, data interface{}) (result T, err error)

PutXML 发送 application/xml PUT 请求。 ctx: 上下文对象。 url: 请求地址。 data: 请求体数据。 返回值: 泛型 T 的响应结果,error 错误信息。

func (*Request[T]) SendRawResponse added in v1.2.2

func (c *Request[T]) SendRawResponse(ctx context.Context, method string, url string, data interface{}) (RawResponse, error)

SendRawResponse 发送请求并返回原始响应。 ctx: 上下文对象。 method: HTTP 方法。 url: 请求地址。 data: 请求数据(GET/HEAD/OPTIONS 为查询参数,其它方法为请求体)。 返回值: RawResponse 原始响应,error 错误信息。

func (*Request[T]) SetDebug added in v1.1.1

func (c *Request[T]) SetDebug(debug bool) *Request[T]

SetDebug 开启或关闭调试模式,调试模式下日志级别为 Debug。 debug: 是否开启调试。 返回值: *Request[T] 支持链式调用。 注意事项: 关闭调试将恢复为客户端日志器的配置。

func (*Request[T]) SetHeaders

func (c *Request[T]) SetHeaders(headers interface{}) *Request[T]

SetHeaders 设置请求头信息,可多次调用叠加不同格式的头部。 headers: 支持结构体、map等多种格式,自动转换为字符串键值对。 返回值: *Request[T] 支持链式调用。

func (*Request[T]) SetTimeout added in v1.2.2

func (c *Request[T]) SetTimeout(timeout time.Duration) *Request[T]

SetTimeout 设置请求级超时时间。 timeout: 超时时长。 返回值: *Request[T] 支持链式调用。 注意事项: 超时时间仅对当前请求实例有效。

func (*Request[T]) UseMiddlewares added in v1.2.2

func (c *Request[T]) UseMiddlewares(middlewares ...RequestMiddleware) *Request[T]

UseMiddlewares 添加请求中间件。 middlewares: 中间件列表。 返回值: *Request[T] 支持链式调用。

type RequestExecutor added in v1.2.2

type RequestExecutor func(context.Context, *resty.Request) (*resty.Response, error)

RequestExecutor 定义请求执行器。

type RequestHook added in v1.2.2

type RequestHook func(context.Context, *resty.Request) error

RequestHook 定义请求前置 Hook。

type RequestMiddleware added in v1.2.2

type RequestMiddleware func(context.Context, *resty.Request, RequestExecutor) (*resty.Response, error)

RequestMiddleware 定义请求中间件。

type ResponseDecodeError added in v1.2.2

type ResponseDecodeError struct {
	Cause error
}

ResponseDecodeError 表示响应解析错误。

func (ResponseDecodeError) Error added in v1.2.2

func (e ResponseDecodeError) Error() string

Error 返回错误信息。

func (ResponseDecodeError) Unwrap added in v1.2.2

func (e ResponseDecodeError) Unwrap() error

Unwrap 返回原始错误。

type ResponseHook added in v1.2.2

type ResponseHook func(context.Context, *resty.Response, error) error

ResponseHook 定义响应后置 Hook。

type ResponseStatusError added in v1.2.2

type ResponseStatusError struct {
	StatusCode int
	Body       string
}

ResponseStatusError 表示非成功 HTTP 状态码错误。

func (ResponseStatusError) Error added in v1.2.2

func (e ResponseStatusError) Error() string

Error 返回错误信息。

type TimeoutError added in v1.2.2

type TimeoutError struct {
	Cause error
}

TimeoutError 表示请求超时错误。

func (TimeoutError) Error added in v1.2.2

func (e TimeoutError) Error() string

Error 返回错误信息。

func (TimeoutError) Unwrap added in v1.2.2

func (e TimeoutError) Unwrap() error

Unwrap 返回原始错误。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL