https

package
v0.3.46 Latest Latest
Warning

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

Go to latest
Published: Sep 10, 2024 License: BSD-3-Clause-Clear Imports: 22 Imported by: 1

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

网址转发操作【此操作暂不支持通配网址信息】

h	原始请求处理器
intef	网址转发配置

func QueryJsonString added in v0.2.92

func QueryJsonString(outs []byte, path ...string) ([]byte, error)

将结果返回的JSON字符串进行转化、提取成指定路径的JSON字符串

outs	待截取的JSON字符串
path	截取下标,如果是列表类型的话,需要拼成字符串类型再行读取,如"0"、"1"等

func SetDefaultAc added in v0.2.94

func SetDefaultAc(ac string)

设置默认的accept请求头

ac	AC请求头

func SetDefaultAcl added in v0.2.94

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.2.94

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.2.94

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"`         // 请求网址
	ParamQuest     map[string]string `json:"param"`       // 请求参数
	HttpCode       int               `json:"http_code"`   // HTTP返回的code值
	ParamJsonQuest map[string]any    `json:"param_json"`  // JSON推送参数
	Body           string            `json:"body"`        // 返回值
	Error          error             `json:"error"`       // 错误信息
	HeaderQuest    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【兼容日志处理模块的预留字段】
	CookieQuest    []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进行管理,则会获取CookieQuest的值,然后使用;=进行分割,以提取其中的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) Replace added in v0.2.92

func (curl *CURL) Replace(old, new string) *CURL

返回值中的字符串替换 此功能会替换 body 内容,请在 GET / POST 之后再行替换

old	待替换内容
new	替换成

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.2.94

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.2.94

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() OptionFunc

设置跳过https证书验证

func WithIgnoreHeader added in v0.2.39

func WithIgnoreHeader(k string) OptionFunc

设置忽略header头日志

k	header请求头的下标标识

func WithNoLog added in v0.2.39

func WithNoLog() OptionFunc

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

func WithTimeOut added in v0.2.39

func WithTimeOut(t time.Duration) OptionFunc

设置请求的超时时间

t	设置超时时间

type WGroup added in v0.2.55

type WGroup struct {
	HasTimeOut bool    // 是否是超时操作
	Error      []error // 错误信息(只有在AddError以后才能判断此值,否则此值会一直为nil)
	// contains filtered or unexported fields
}

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

func Group added in v0.2.55

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

HTTP请求组,将一组HTTP请求放置在一起,进行并发请求,直到最后一个请求完成再往下进行处理 该程序的耗时与传入的具体函数有关,一般情况下比传入的程序的最大耗时再大一些 该方法用于实现比 sync.WaitGroup 更精细的功能,效率比 sync.WaitGroup 稍低

fun	待处理的函数请求

func (*WGroup) Add added in v0.2.55

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

添加异步待处理请求

fun	待处理的函数请求

func (*WGroup) AddError added in v0.2.92

func (g *WGroup) AddError(f func() error) *WGroup

添加可以返回错误信息的函数调用

f	带有error返回值的错误信息

func (*WGroup) Run added in v0.2.55

func (g *WGroup) Run() *WGroup

开始执行

func (*WGroup) Times added in v0.2.55

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

获取请求组运行时间

func (*WGroup) WithContext added in v0.2.92

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