httprequest

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Jan 2, 2024 License: GPL-3.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const CtxKey_nolog = utils.CtxKey_nolog // 不打印日志,错误日志还会打印 值:不受限制 一般写1

Variables

Functions

func JsonRequest

func JsonRequest[T any](ctx context.Context, method, addr string, body interface{}, headers map[string]string) (int, *T, error)

body和返回值都是可以转Json的对象

func RegHook

func RegHook(f func(ctx context.Context, call *HttpRequest))

func Request

func Request(ctx context.Context, method, addr string, body []byte, headers map[string]string) (int, []byte, error)

Request http请求 返回值StatusCode 内容 错误码

Types

type HttpRequest

type HttpRequest struct {
	Method string // 请求方法 GET POST ..
	Addr   string // 请求地址
	URL    *url.URL
	Header http.Header //请求头
	Data   []byte      // 请求数据

	Err error // 内部错误

	Resp     *http.Response // 请求返回对象 Err==nil时有效
	RespData []byte         // 请求返回数据 Err==nil时有效

	Elapsed time.Duration // 请求耗时

	Body     interface{} // 根据请求接口来填充原始对象
	RespBody interface{} // 根据请求接口来填充原始对象
	// contains filtered or unexported fields
}

func JsonRequest2

func JsonRequest2[T any](ctx context.Context, method, addr string, body interface{}, header http.Header) (*T, *HttpRequest)

专业接口 body和返回值都是可以转Json的对象

func Request2

func Request2(ctx context.Context, method, addr string, body []byte, header http.Header) *HttpRequest

专业接口

type ParamConfig

type ParamConfig struct {
	// 日志级别和zerolog.Level一致
	// Host和Path共存的配置,优先使用Path配置
	LogLevel           int            `json:"loglevel,omitempty"`           // 默认的级别,不配置就是info级别
	LogLevelByHost     map[string]int `json:"loglevelbyhost,omitempty"`     // 根据Host区分的日志级别,Host:日志级别, Host支持?*通配符 不区分大小写,不配置默认使用LogLevel级别
	LogLevelByPath     map[string]int `json:"loglevelbypath,omitempty"`     // 根据Path区分的日志级别,Path:日志级别 Path支持?*通配符 不区分大小写,不配置默认使用LogLevel级别
	LogLevelHead       int            `json:"loglevelhead,omitempty"`       // 请求头和回复头的日志级别,不配置就是debug级别
	LogLevelHeadByHost map[string]int `json:"loglevelheadbyhost,omitempty"` // 根据Host区分的请求头和回复头日志级别,Host:日志级别, Host支持?*通配符 不区分大小写,不配置默认使用LogLevelHead级别
	LogLevelHeadByPath map[string]int `json:"loglevelheadbypath,omitempty"` // 根据Path区分的请求头和回复头日志级别,Path:日志级别 Path支持?*通配符 不区分大小写,不配置默认使用LogLevelHead级别

	TimeOutCheck int  `json:"timeoutcheck,omitempty"` // 消息超时监控 单位秒 默认0不开启监控
	Pool         bool `json:"pool,omitempty"`         // 是否使用连接池,有些网址处理完请求就执行关闭,会导致连接池有问题,默认不使用

	BodyLogLimit int `json:"bodyloglimit,omitempty"` // body日志限制 <=0 表示不限制
	// Timeout: 执行 command 的超时时间 单位为毫秒
	// MaxConcurrentRequests: 最大并发量
	// RequestVolumeThreshold: 一个统计窗口 10 秒内请求数量 达到这个请求数量后才去判断是否要开启熔断
	// SleepWindow: 熔断器被打开后 SleepWindow的时间就是控制过多久后去尝试服务是否可用了 单位为毫秒
	// ErrorPercentThreshold: 错误百分比 请求数量大于等于 RequestVolumeThreshold 并且错误率到达这个百分比后就会启动熔断
	Hystrix map[string]*hystrix.CommandConfig `json:"hystrix,omitempty"` // 熔断器 [url:Config],path 支持?*通配符 不区分大小写 目前不支持动态删除
}

参数配置

func (*ParamConfig) Create

func (c *ParamConfig) Create()

func (*ParamConfig) GetLogLevel

func (c *ParamConfig) GetLogLevel(path, host string) int

func (*ParamConfig) GetLogLevelHead

func (c *ParamConfig) GetLogLevelHead(path, host string) int

func (*ParamConfig) IsHystrixURL

func (c *ParamConfig) IsHystrixURL(url string) (string, bool)

func (*ParamConfig) Normalize

func (c *ParamConfig) Normalize()

Jump to

Keyboard shortcuts

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