grope

package
v0.0.0-...-8f0e436 Latest Latest
Warning

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

Go to latest
Published: Dec 2, 2020 License: Apache-2.0 Imports: 23 Imported by: 9

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ListenAndServe

func ListenAndServe(Addr string, gs *GHttpServe)

ListenAndServe 启动监听

Addr 期望监听的端口号,如“:8080”

func ListenAndServeTLS

func ListenAndServeTLS(gs *GHttpServe, Addr, certFilePath, keyFilePath string, insecureSkipVerify bool, caCertFilePaths ...string)

ListenAndServeTLS 启动监听

Addr 期望监听的端口号,如“:8080”

必须提供包含证书和与服务器匹配的私钥的文件。如果证书是由证书颁发机构签署的,则certFile应该是服务器证书、任何中间体和CA证书的连接。

Types

type Context

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

Context grope 请求处理上下文

func (*Context) ClientIP

func (c *Context) ClientIP() string

ClientIP 尝试获取客户端IP

func (*Context) ContentType

func (c *Context) ContentType() string

ContentType 返回请求的内容类型头

func (*Context) Cookie

func (c *Context) Cookie(name string) (string, error)

Cookie returns the named cookie provided in the request or ErrNoCookie if not found. And return the named cookie is unescaped. If multiple cookies match the given name, only one cookie will be returned.

func (*Context) Distribution

func (c *Context) Distribution(url string, fusing Fusing)

Distribution 请求转发

addr是期望的转发路径,一般可指定为"http://ip:port"、"https://ip:port"、"http://url.com"

func (*Context) DistributionTLS

func (c *Context) DistributionTLS(url string, tLSConfig *TLSConfig, fusing Fusing)

DistributionTLS 请求转发

addr是期望的转发路径,一般可指定为"http://ip:port"、"https://ip:port"、"http://url.com"

tLSConfig http tls 请求配置

func (*Context) Distributions

func (c *Context) Distributions(addr string, transport *Transport, fusing Fusing)

Distributions 请求转发

addr是期望的转发路径,一般可指定为"http://ip:port"、"https://ip:port"、"http://url.com"

transport 支持HTTP和HTTPS的传输配置

func (*Context) GetRawData

func (c *Context) GetRawData() ([]byte, error)

GetRawData 返回Body中流数据.

func (*Context) HeaderGet

func (c *Context) HeaderGet(key string) string

HeaderGet 返回请求头中指定key的值

func (*Context) HeaderSet

func (c *Context) HeaderSet(key, value string)

HeaderSet 设置请求头中指定key的值

func (*Context) IsWebsocket

func (c *Context) IsWebsocket() bool

IsWebsocket 如果请求头指示客户端正在发起websocket握手,则IsWebsocket返回true

func (*Context) Param

func (c *Context) Param(key string) string

Param 获取Params中自定义的参数集合中指定Key的值

func (*Context) Params

func (c *Context) Params() map[string]string

Params 获取Params中自定义的参数集合

func (*Context) ReceiveForm

func (c *Context) ReceiveForm() (map[string]interface{}, error)

ReceiveForm 接收一个"application/x-www-form-urlencoded"请求

func (*Context) ReceiveJSON

func (c *Context) ReceiveJSON(model interface{}) error

ReceiveJSON 接收一个"application/json"请求

func (*Context) ReceiveMsgPack

func (c *Context) ReceiveMsgPack(model interface{}) error

ReceiveMsgPack 接收一个"application/x-msgpack"请求

func (*Context) ReceiveMultipartForm

func (c *Context) ReceiveMultipartForm() (*tune.MultipartForm, error)

ReceiveMultipartForm 接收一个"multipart/form-data"请求

func (*Context) ReceiveProtoBuf

func (c *Context) ReceiveProtoBuf(pm proto.Message) error

ReceiveProtoBuf 接收一个"application/x-protobuf"请求

func (*Context) ReceiveXML

func (c *Context) ReceiveXML(model interface{}) error

ReceiveXML 接收一个"application/xml"请求

func (*Context) ReceiveYaml

func (c *Context) ReceiveYaml(model interface{}) error

ReceiveYaml 接收一个"application/x-yaml"请求

func (*Context) Redirect

func (c *Context) Redirect(statusCode int, addr string) error

Redirect 将http请求重定向到新的地址并写入重定向响应

func (*Context) Request

func (c *Context) Request() *http.Request

Request 获取 *http.Request

func (*Context) ResponseFile

func (c *Context) ResponseFile(statusCode int, filename, filepath string) error

ResponseFile 返回一个"application/octet-stream"

statusCode eg:http.StatusOK

func (*Context) ResponseJSON

func (c *Context) ResponseJSON(statusCode int, model interface{}) error

ResponseJSON 返回一个"application/json"

statusCode eg:http.StatusOK

func (*Context) ResponseMsgPack

func (c *Context) ResponseMsgPack(statusCode int, model interface{}) error

ResponseMsgPack 返回一个"application/x-msgpack"

statusCode eg:http.StatusOK

func (*Context) ResponseProtoBuf

func (c *Context) ResponseProtoBuf(statusCode int, pm proto.Message) error

ResponseProtoBuf 返回一个"application/x-protobuf"

statusCode eg:http.StatusOK

func (*Context) ResponseText

func (c *Context) ResponseText(statusCode int, text string) error

ResponseText 返回一个"text/plain"

statusCode eg:http.StatusOK

func (*Context) ResponseXML

func (c *Context) ResponseXML(statusCode int, model interface{}) error

ResponseXML 返回一个"application/xml"

statusCode eg:http.StatusOK

func (*Context) ResponseYaml

func (c *Context) ResponseYaml(statusCode int, model interface{}) error

ResponseYaml 返回一个"application/x-yaml"

statusCode eg:http.StatusOK

func (*Context) SetCookie

func (c *Context) SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool)

SetCookie adds a Set-Cookie header to the ResponseWriter's headers. The provided cookie must have a valid Name. Invalid cookies may be silently dropped.

func (*Context) SetSameSite

func (c *Context) SetSameSite(sameSite http.SameSite)

SetSameSite with cookie

func (*Context) Status

func (c *Context) Status(code int)

Status 用提供的状态码发送一个HTTP响应头

func (*Context) Value

func (c *Context) Value(key string) string

Value 获取URI中自定义的参数集合中指定Key的值

func (*Context) Values

func (c *Context) Values() map[string]string

Values 获取URI中自定义的参数集合

type Extend

type Extend struct {
	Limit *Limit
}

Extend 请求扩展

type Filter

type Filter func(ctx *Context)

Filter 过滤器/拦截器处理

ctx 请求处理上下文结构

type Fusing

type Fusing func(err error)

Fusing 熔断处理

err 熔断处理原因

type GHttpRouter

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

GHttpRouter Http服务路由结构

func (*GHttpRouter) Connect

func (ghr *GHttpRouter) Connect(pattern string, handler Handler, filters ...Filter)

Connect 发起一个 Connect 请求接收项目

CONNECT方法是HTTP/1.1协议预留的,能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接与非加密的HTTP代理服务器的通信。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Connects

func (ghr *GHttpRouter) Connects(pattern string, extend *Extend, handler Handler, filters ...Filter)

Connects 发起一个 Connect 请求接收项目

CONNECT方法是HTTP/1.1协议预留的,能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接与非加密的HTTP代理服务器的通信。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Delete

func (ghr *GHttpRouter) Delete(pattern string, handler Handler, filters ...Filter)

Delete 发起一个 Delete 请求接收项目

DELETE请求用于请求服务器删除所请求URI(统一资源标识符,Uniform Resource Identifier)所标识的资源。 DELETE请求后指定资源会被删除,DELETE方法也是幂等的。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Deletes

func (ghr *GHttpRouter) Deletes(pattern string, extend *Extend, handler Handler, filters ...Filter)

Deletes 发起一个 Delete 请求接收项目

DELETE请求用于请求服务器删除所请求URI(统一资源标识符,Uniform Resource Identifier)所标识的资源。 DELETE请求后指定资源会被删除,DELETE方法也是幂等的。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Get

func (ghr *GHttpRouter) Get(pattern string, handler Handler, filters ...Filter)

Get 发起一个 Get 请求接收项目

GET请求会显示请求指定的资源。一般来说GET方法应该只用于数据的读取,而不应当用于会产生副作用的非幂等的操作中。 GET会方法请求指定的页面信息,并返回响应主体,GET被认为是不安全的方法,因为GET方法会被网络蜘蛛等任意的访问。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Gets

func (ghr *GHttpRouter) Gets(pattern string, extend *Extend, handler Handler, filters ...Filter)

Gets 发起一个 Get 请求接收项目

GET请求会显示请求指定的资源。一般来说GET方法应该只用于数据的读取,而不应当用于会产生副作用的非幂等的操作中。 GET会方法请求指定的页面信息,并返回响应主体,GET被认为是不安全的方法,因为GET方法会被网络蜘蛛等任意的访问。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Head

func (ghr *GHttpRouter) Head(pattern string, handler Handler, filters ...Filter)

Head 发起一个 Head 请求接收项目

HEAD方法与GET方法一样,都是向服务器发出指定资源的请求。 但是,服务器在响应HEAD请求时不会回传资源的内容部分,即:响应主体。 这样,我们可以不传输全部内容的情况下,就可以获取服务器的响应头信息。HEAD方法常被用于客户端查看服务器的性能。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Heads

func (ghr *GHttpRouter) Heads(pattern string, extend *Extend, handler Handler, filters ...Filter)

Heads 发起一个 Head 请求接收项目

HEAD方法与GET方法一样,都是向服务器发出指定资源的请求。 但是,服务器在响应HEAD请求时不会回传资源的内容部分,即:响应主体。 这样,我们可以不传输全部内容的情况下,就可以获取服务器的响应头信息。HEAD方法常被用于客户端查看服务器的性能。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Option

func (ghr *GHttpRouter) Option(pattern string, handler Handler, filters ...Filter)

Option 发起一个 Options 请求接收项目

OPTIONS请求与HEAD类似,一般也是用于客户端查看服务器的性能。 这个方法会请求服务器返回该资源所支持的所有HTTP请求方法,该方法会用’*’来代替资源名称,向服务器发送OPTIONS请求,可以测试服务器功能是否正常。 JavaScript的XMLHttpRequest对象进行CORS跨域资源共享时,就是使用OPTIONS方法发送嗅探请求,以判断是否有对指定资源的访问权限。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Options

func (ghr *GHttpRouter) Options(pattern string, extend *Extend, handler Handler, filters ...Filter)

Options 发起一个 Options 请求接收项目

OPTIONS请求与HEAD类似,一般也是用于客户端查看服务器的性能。 这个方法会请求服务器返回该资源所支持的所有HTTP请求方法,该方法会用’*’来代替资源名称,向服务器发送OPTIONS请求,可以测试服务器功能是否正常。 JavaScript的XMLHttpRequest对象进行CORS跨域资源共享时,就是使用OPTIONS方法发送嗅探请求,以判断是否有对指定资源的访问权限。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Patch

func (ghr *GHttpRouter) Patch(pattern string, handler Handler, filters ...Filter)

Patch 发起一个 Patch 请求接收项目

PATCH方法出现的较晚,它在2010年的RFC 5789标准中被定义。PATCH请求与PUT请求类似,同样用于资源的更新。二者有以下两点不同: PATCH一般用于资源的部分更新,而PUT一般用于资源的整体更新。 当资源不存在时,PATCH会创建一个新的资源,而PUT只会对已在资源进行更新。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Patches

func (ghr *GHttpRouter) Patches(pattern string, extend *Extend, handler Handler, filters ...Filter)

Patches 发起一个 Patch 请求接收项目

PATCH方法出现的较晚,它在2010年的RFC 5789标准中被定义。PATCH请求与PUT请求类似,同样用于资源的更新。二者有以下两点不同: PATCH一般用于资源的部分更新,而PUT一般用于资源的整体更新。 当资源不存在时,PATCH会创建一个新的资源,而PUT只会对已在资源进行更新。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Post

func (ghr *GHttpRouter) Post(pattern string, handler Handler, filters ...Filter)

Post 发起一个 Post 请求接收项目

POST请求会 向指定资源提交数据,请求服务器进行处理,如:表单数据提交、文件上传等,请求数据会被包含在请求体中。 POST方法是非幂等的方法,因为这个请求可能会创建新的资源或/和修改现有资源。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Posts

func (ghr *GHttpRouter) Posts(pattern string, extend *Extend, handler Handler, filters ...Filter)

Posts 发起一个 Post 请求接收项目

POST请求会 向指定资源提交数据,请求服务器进行处理,如:表单数据提交、文件上传等,请求数据会被包含在请求体中。 POST方法是非幂等的方法,因为这个请求可能会创建新的资源或/和修改现有资源。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Proxies

func (ghr *GHttpRouter) Proxies(pattern string, proxy *Proxy, extend *Extend, filters ...Filter)

Proxies 发起一个 Proxy 请求接收项目

PROXY 代理http请求相关

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Put

func (ghr *GHttpRouter) Put(pattern string, handler Handler, filters ...Filter)

Put 发起一个 Put 请求接收项目

PUT请求会身向指定资源位置上传其最新内容,PUT方法是幂等的方法。通过该方法客户端可以将指定资源的最新数据传送给服务器取代指定的资源的内容。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Puts

func (ghr *GHttpRouter) Puts(pattern string, extend *Extend, handler Handler, filters ...Filter)

Puts 发起一个 Put 请求接收项目

PUT请求会身向指定资源位置上传其最新内容,PUT方法是幂等的方法。通过该方法客户端可以将指定资源的最新数据传送给服务器取代指定的资源的内容。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Trace

func (ghr *GHttpRouter) Trace(pattern string, handler Handler, filters ...Filter)

Trace 发起一个 Trace 请求接收项目

TRACE请求服务器回显其收到的请求信息,该方法主要用于HTTP请求的测试或诊断。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

func (*GHttpRouter) Traces

func (ghr *GHttpRouter) Traces(pattern string, extend *Extend, handler Handler, filters ...Filter)

Traces 发起一个 Trace 请求接收项目

TRACE请求服务器回显其收到的请求信息,该方法主要用于HTTP请求的测试或诊断。

pattern 项目路径,如“/demo/:id/:name”,与路由根路径相结合,最终会通过类似“http://127.0.0.1:8080/test/demo/1/g”方式进行访问

model 期望接收的结构,如“&Test{}”,最终在Handler方法中得以调用

handler 待实现接收请求方法

filters 待实现拦截器/过滤器方法数组

type GHttpServe

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

GHttpServe Http服务

func NewHTTPServe

func NewHTTPServe(filters ...Filter) *GHttpServe

NewHTTPServe 新建一个Http服务

func (*GHttpServe) Group

func (ghs *GHttpServe) Group(pattern string, filters ...Filter) *GHttpRouter

Group 设置路由根路径

pattern 路由根路径,如“/test”

filters 待实现拦截器/过滤器方法数组

func (*GHttpServe) ServeHTTP

func (ghs *GHttpServe) ServeHTTP(w http.ResponseWriter, r *http.Request)

type Handler

type Handler func(ctx *Context)

Handler 待实现接收请求方法

ctx 请求处理上下文结构

type Limit

type Limit struct {
	LimitMillisecond         int64 // 请求限定的时间段(毫秒)
	LimitCount               int   // 请求限定的时间段内允许的请求次数
	LimitIntervalMillisecond int64 // 请求允许的最小间隔时间(毫秒),0表示不限
	// contains filtered or unexported fields
}

Limit 限流策略

type Proxy

type Proxy struct {
	Balance balance.Class // 负载模型
	Target  []*Target     // 代理目标结构
}

Proxy 请求代理结构,目前仅支持HTTP

type TLSConfig

type TLSConfig struct {
	// 服务端根证书,用于我方验证对方证书合法性
	CACrtFilePath string
	// 服务端签发的子证书,用于对方验证我方证书合法性
	CertFilePath string
	// 客户端私钥,用于对方验证我方证书合法性
	KeyFilePath string
	// 是否验证服务端证书,即双向认证
	InsecureSkipVerify bool
}

TLSConfig http tls 请求配置

type Target

type Target struct {
	Host    string // eg:localhost
	Port    string // eg:8080
	Pattern string // eg:“/demo/id/name”
	Weight  int    // 负载权重,如果负载模型选择权重模型则有效
}

Target 代理目标结构

type Transport

type Transport struct {
	// 等待连接完成的超时时间,默认30s
	Timeout time.Duration
	// 指定网络连接的活动实践间隔,默认30s
	KeepAlive time.Duration
	// 控制最大空闲(保持活动)连接数。0表示没有限制,默认100
	MaxIdleConns int
	// 一个空闲(保持活动)连接在关闭之前保持空闲的最大时间量。0表示没有限制,默认90s
	IdleConnTimeout time.Duration
	// 指定等待TLS握手的最大时间量。0表示没有限制,默认10s
	TLSHandshakeTimeout time.Duration
	// 指定在完全写入请求标头之后等待服务器的第一个响应头的时间量(如果请求具有“Expect: 100-continue”头信息)。
	// 零意味着没有超时,并且会立即发送正文,而无需等待服务器的批准。
	// 此时间不包括发送请求标头的时间。 默认1s
	ExpectContinueTimeout time.Duration
	// 指定每个主机的最大空闲(保持活动)连接,默认100
	MaxIdleConnsPerHost int
	// http tls 请求配置
	TLSConfig *TLSConfig
}

Transport 支持HTTP和HTTPS的传输配置

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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