https

package
v0.3.8 Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2024 License: BSD-3-Clause-Clear Imports: 22 Imported by: 0

Documentation

Overview

HTTPS请求-带缓存、选项的V2版

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ClearQuestLog added in v0.2.39

func ClearQuestLog()

清除Quest请求日志记录的函数列表

func Gatway

func Gatway(h http.Handler, intef GatwayInterface) http.Handler

网址转发操作【此操作暂不支持通配网址信息】 比如,在gin框架中使用时,用以下方式进行嵌套:

wraphh类的来源:import wraphh "github.com/turtlemonvh/gin-wraphh"
r.GET("xxxx", wraphh.WrapHH(func(h http.Handler) http.Handler {
    // 假设声明实现该接口的类型为XXX
    target_urls := XXX{}
    return Gatway(h, target_urls)
}))

h	HTTP请求中间件会传入的参数
intef	HTTP转发过程中的数据交互钩子

func SetDefaultAc added in v0.3.0

func SetDefaultAc(ac string)

设置默认的accept请求头

ac	AC请求头

func SetDefaultAcl added in v0.3.0

func SetDefaultAcl(al string)

设置默认的accept-language请求头

al	待设置的请求头

func SetDefaultCacheFunc added in v0.2.39

func SetDefaultCacheFunc(t CacheInterface)

设置缓存信息

t	实现缓存方法的接口信息

func SetDefaultCacheTime added in v0.2.39

func SetDefaultCacheTime(t time.Duration)

设置默认的缓存时间 不建议设置此值,若确实需要缓存的话,建议针对URL地址进行配置缓存时间

t	缓存时间

func SetDefaultCt added in v0.3.0

func SetDefaultCt(ct string)

设置默认的Content-Type请求头

ct	Content-Type请求头

func SetDefaultTimeOut added in v0.2.39

func SetDefaultTimeOut(t time.Duration)

设置默认的超时时间

t	超时时间

func SetDefaultUa added in v0.3.0

func SetDefaultUa(ua string)

设置默认的user-agent请求头

ua	UA请求头

func SetDefaultUnCookieJar added in v0.2.41

func SetDefaultUnCookieJar(s bool)

设置默认是否存储cookie

s	是否存储cookie值,默认存储,可以使用此方法跳过cookie的存储

func SetJar added in v0.2.41

func SetJar(jar *cookiejar.Jar)

设置cookie存储的jar信息

jar	存储的jar信息,默认为nil,nil会获取新的cookiejar.New的jar结构体

func SetQuestLog added in v0.2.39

func SetQuestLog(f func(c *CURL))

设置Quest请求日志

f	日志记录函数【此函数会记录多个,所以请勿一直调用SetQuestLog进行插入日志记录函数】

Types

type CURL

type CURL struct {
	Uri             string            `json:"uri"`         // 请求网址
	Param_quest     map[string]string `json:"param"`       // 请求参数
	HttpCode        int               `json:"http_code"`   // HTTP返回的code值
	ParamJson_quest map[string]any    `json:"param_json"`  // JSON推送参数
	Body            string            `json:"body"`        // 返回值
	Error           error             `json:"error"`       // 错误信息
	Header_quest    map[string]string `json:"header"`      // 请求Header头
	CreateTime      time.Time         `json:"create_time"` // 实例创建时间
	StartTime       time.Time         `json:"start_time"`  // 请求开始时间
	EndTime         time.Time         `json:"end_time"`    // 请求结束时间
	OverTime        time.Time         `json:"over_time"`   // JSON提取结束时间
	ClientIp        string            `json:"client_ip"`   // 请求的客户端IP【兼容日志处理模块的预留字段】
	Cookie_quest    []string          `json:"cookie"`      // HTTP网址返回的Set-Cookie相应头
	Version         float64           `json:"version"`     // HTTP返回的Header头中的版本信息
	// contains filtered or unexported fields
}

网址服务对象

func New added in v0.2.39

func New(url string, opts ...OptionFunc) *CURL

声明URL请求结构信息

url		要请求的网址信息
opts	可选参数,针对此网址进行的配置项追加

func (*CURL) AddFile added in v0.2.70

func (c *CURL) AddFile(form_name, file_name string) *CURL

添加待上传的文件

form_name	form表单名
file_name	文件原始路径

func (*CURL) AddFileByte added in v0.2.70

func (c *CURL) AddFileByte(form_name string, file_byte []byte) *CURL

添加待上传的文件-以字节流的形式进行添加 PS: 因暂未找到直接写入字节流的形式上传,所以此函数调用了临时文件进行写入,然后再请求的时候进行读取,效率会稍有降低,建议正常上传时直接读取文件进行上传

form_name	form表单名
file_byte	文件字节流

func (*CURL) Authorization added in v0.2.39

func (c *CURL) Authorization(token string) *CURL

追加Header请求头信息

token	JWT编码的Token加密信息

func (*CURL) Cookie added in v0.2.39

func (c *CURL) Cookie() []*http.Cookie

获取域名下的cookie信息 如果使用了jar进行cookie管理,会直接返回jar中该域名下的cookie 如果未使用jar进行管理,则会获取Cookie_quest的值,然后使用;=进行分割,以提取其中的key/value值 响应的,如果未使用jar进行管理,此处会手动循环cookie中的值进行strings切分,所以此处速度会稍慢一些

func (*CURL) Download added in v0.2.39

func (c *CURL) Download(file string) *CURL

下载文件,将请求的内容保存到本地

file	保存文件名

func (*CURL) DownloadIO added in v0.2.39

func (c *CURL) DownloadIO(f io.Writer) *CURL

下载文件到对外IO中进行重定向

f	写入对象的IO方法

func (*CURL) Get added in v0.2.39

func (c *CURL) Get() *CURL

使用GET请求 此处仅能使用 `Param` 进行设置请求参数

func (*CURL) Header

func (c *CURL) Header(h map[string]string) *CURL

设置Header请求头

h	header请求头的键值对信息

func (*CURL) HeaderKV added in v0.2.39

func (c *CURL) HeaderKV(k, v string) *CURL

设置Header请求头

k	header下标
v	header下标对应的值

func (*CURL) Json

func (curl *CURL) Json(obj any, first ...string) error

获取JSON中的数据

obj			要获取的obj对象,需要提供给json.Unmarshal
first...	simplejson.GetPath传入的string列表

func (*CURL) JsonData

func (curl *CURL) JsonData(obj any) error

获取JSON中的Data对象

obj	要转化的对象,需要在json中的data里面

func (*CURL) Param

func (c *CURL) Param(m map[string]string) *CURL

追加请求参数

m	待追加的参数信息

func (*CURL) ParamJson

func (c *CURL) ParamJson(m map[string]any) *CURL

JSON格式的请求参数追加

m	追加的参数列表(可直接传入map[string]any{"_":xxx}(会在map最外层有且仅有_下标时才会直接取其内容进行传输))

func (*CURL) ParamJsonAny added in v0.2.39

func (c *CURL) ParamJsonAny(m any) *CURL

JSON格式的请求参数追加

m	追加的参数列表(此处为简写map[string]any{"_":any}的写法)

func (*CURL) ParamKV added in v0.2.39

func (c *CURL) ParamKV(k, v string) *CURL

追加请求参数

k	请求参数的参数名
v	请求参数的参数值

func (*CURL) Post added in v0.2.39

func (c *CURL) Post() *CURL

使用POST请求 此处仅能使用 `Param` 进行设置请求参数

func (*CURL) PostJson added in v0.2.39

func (c *CURL) PostJson() *CURL

使用POST请求 此处使用 `ParamJson` 进行设置请求参数,支持使用 `Param` 设置的参数列表

func (*CURL) WithOption added in v0.2.39

func (c *CURL) WithOption(opts ...OptionFunc) *CURL

设置Option选项[此参数需要在Get/Post/PostJson之前进行调用,若在之后调用的话会失去作用]

opts	可选参数,针对此网址进行的配置项追加

type CacheInterface added in v0.2.39

type CacheInterface interface {
	Get(name string) string                       // 获取缓存值,缓存未找到的话请返回空字符串
	Set(name string, val string, t time.Duration) // 设置缓存值,可能存在部分无法在string中正常显示的字符串
}

缓存钩子

type GatwayInterface

type GatwayInterface interface {
	// 超时时间
	Timeout() time.Duration

	// 长连接超时时间
	KeepAlive() time.Duration

	// TLS握手超时时间
	TLSHandshakeTimeout() time.Duration

	// 负载均衡的URL列表[此处采用随机的方式进行请求访问]
	Urls() []string

	// 请求的网址信息[可做额外处理,如追加header参数等](此处不建议重写URL)
	// 追加Header方法:request.Header.Set("","")
	QuestUrl(request *http.Request)

	// 响应处理[可做额外处理,如重写返回信息等](socket长连接不支持此方法)
	// 重写方法:将重写结果作为[]byte进行返回(若此值为nul则表示不进行重写)
	ResponseUrl(response *http.Response) ([]byte, error)

	// 错误处理方法
	// 错误回调 :关闭real_server时测试,错误回调
	// 范围:transport.RoundTrip发生的错误、以及ModifyResponse发生的错误
	Error(w http.ResponseWriter, r *http.Request, err error)
}

传入的接口信息,用于处理响应的回调操作

type Option added in v0.2.39

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

外部选项传参结构[可选参数]

type OptionFunc added in v0.2.39

type OptionFunc func(c *Option)

选项设置参数,用于设置本次请求中的选项信息

func WithCache added in v0.2.39

func WithCache(t time.Duration) OptionFunc

设置缓存时间

t	设置缓存时间,0表示不设置缓存

func WithContext added in v0.3.2

func WithContext(ctx context.Context) OptionFunc

使用context.Context来控制进程请求

ctx	控制请求的context结构

func WithCookie added in v0.2.41

func WithCookie(jar *cookiejar.Jar) OptionFunc

使用不同的cookiejar包

jar	存储cookie的依赖结构[传入nil表示不存储cookie]

func WithHosts added in v0.3.3

func WithHosts(host map[string]string) OptionFunc

导入程序指定的host对(此处的域名、IP对应关系和host文件中的对应关系) 如果host中写入端口的话,域名和IP都需要对应上端口才行,如:"xiaoyutab.cn:443": "120.24.39.208:443"

host	待导入的主机对,格式为   "域名[:端口]": "主机IP[:端口]"

func WithHttpsContinue added in v0.2.39

func WithHttpsContinue(c bool) OptionFunc

设置跳过https证书验证

c	是否跳过

func WithIgnoreHeader added in v0.2.39

func WithIgnoreHeader(k string) OptionFunc

设置忽略header头日志

k	header请求头的下标标识

func WithNoLog added in v0.2.39

func WithNoLog(l bool) OptionFunc

设置此记录不记录日志标识

k	是否取消此条的日志记录

func WithTimeOut added in v0.2.39

func WithTimeOut(t time.Duration) OptionFunc

设置请求的超时时间

t	设置超时时间

type WGroup added in v0.2.55

type WGroup struct {
	Limit int // 最大并发携程限制,默认10000(此数不宜设置过小,设置过小的话会导致进程阻塞在通道推入中,无法监控context的状态控制)
	// contains filtered or unexported fields
}

分组请求结构 每个请求组只可运行一次

func Group added in v0.2.55

func Group(fun ...func()) *WGroup

HTTP请求组,将一组HTTP请求放置在一起,进行并发请求,直到最后一个请求完成再往下进行处理 该程序的耗时与传入的具体函数有关,一般情况下比传入的程序的最大耗时再大一些

fun	待处理的函数请求

func (*WGroup) Add added in v0.2.55

func (g *WGroup) Add(fun ...func()) *WGroup

添加异步待处理请求

fun	待处理的函数请求

func (*WGroup) Run added in v0.2.55

func (g *WGroup) Run() *WGroup

开始执行

func (*WGroup) SetLimit added in v0.2.55

func (g *WGroup) SetLimit(i int) *WGroup

设置最大执行队列条数

i	待设置的最大队列执行条数

func (*WGroup) Times added in v0.2.55

func (g *WGroup) Times() time.Duration

获取请求组运行时间

func (*WGroup) WithContext added in v0.3.2

func (g *WGroup) WithContext(ctx context.Context) *WGroup

设置中控context结构

ctx	中控结构

Jump to

Keyboard shortcuts

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