ghttp

package
v0.0.0-...-882a3c6 Latest Latest
Warning

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

Go to latest
Published: Jun 13, 2018 License: MIT Imports: 44 Imported by: 0

Documentation

Overview

HTTP Client & Server.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildParams

func BuildParams(params map[string]string) string

构建请求参数,将参数进行urlencode编码

func Wait

func Wait()

阻塞等待所有Web Server停止,常用于多Web Server场景,以及需要将Web Server异步运行的场景 这是一个与进程相关的方法

Types

type Client

type Client struct {
	http.Client // 底层http client对象
	// contains filtered or unexported fields
}

http客户端

func NewClient

func NewClient() *Client

http客户端对象指针

func (*Client) Connect

func (c *Client) Connect(url, data string) (*ClientResponse, error)

func (*Client) Delete

func (c *Client) Delete(url, data string) (*ClientResponse, error)

DELETE请求

func (*Client) DoRequest

func (c *Client) DoRequest(method, url string, data []byte) (*ClientResponse, error)

请求并返回response对象,该方法支持二进制提交数据

func (*Client) Get

func (c *Client) Get(url string) (*ClientResponse, error)

GET请求

func (*Client) Head

func (c *Client) Head(url, data string) (*ClientResponse, error)

func (*Client) Options

func (c *Client) Options(url, data string) (*ClientResponse, error)

func (*Client) Patch

func (c *Client) Patch(url, data string) (*ClientResponse, error)

func (*Client) Post

func (c *Client) Post(url, data string) (*ClientResponse, error)

POST请求提交数据 支持文件上传,需要字段格式为:FieldName=@file:

func (*Client) Put

func (c *Client) Put(url, data string) (*ClientResponse, error)

PUT请求

func (*Client) SetHeader

func (c *Client) SetHeader(key, value string)

设置HTTP Headerss

func (*Client) SetTimeOut

func (c *Client) SetTimeOut(t time.Duration)

设置请求过期时间

func (*Client) Trace

func (c *Client) Trace(url, data string) (*ClientResponse, error)

type ClientResponse

type ClientResponse struct {
	http.Response
}

客户端请求结果对象

func Connect

func Connect(url, data string) (*ClientResponse, error)

func Delete

func Delete(url, data string) (*ClientResponse, error)

func DoRequest

func DoRequest(method, url string, data []byte) (*ClientResponse, error)

该方法支持二进制提交数据

func Get

func Get(url string) (*ClientResponse, error)
func Head(url, data string) (*ClientResponse, error)

func Options

func Options(url, data string) (*ClientResponse, error)

func Patch

func Patch(url, data string) (*ClientResponse, error)

func Post

func Post(url, data string) (*ClientResponse, error)

func Put

func Put(url, data string) (*ClientResponse, error)

func Trace

func Trace(url, data string) (*ClientResponse, error)

func (*ClientResponse) Close

func (r *ClientResponse) Close()

关闭返回的HTTP链接

func (*ClientResponse) ReadAll

func (r *ClientResponse) ReadAll() []byte

获取返回的数据

type Controller

type Controller interface {
	Init(*Request)
	Shut(*Request)
}

控制器接口

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

cookie对象

func GetCookie

func GetCookie(r *Request) *Cookie

获取或者创建一个cookie对象,与传入的请求对应

func (*Cookie) Close

func (c *Cookie) Close()

请求完毕后删除已经存在的Cookie对象

func (*Cookie) Get

func (c *Cookie) Get(key string) string

查询cookie

func (*Cookie) Map

func (c *Cookie) Map() map[string]string

获取所有的Cookie并构造成map返回

func (*Cookie) Output

func (c *Cookie) Output()

输出到客户端

func (*Cookie) Remove

func (c *Cookie) Remove(key, domain, path string)

标记该cookie在对应的域名和路径失效 删除cookie的重点是需要通知浏览器客户端cookie已过期

func (*Cookie) SessionId

func (c *Cookie) SessionId() string

获取SessionId

func (*Cookie) Set

func (c *Cookie) Set(key, value string)

设置cookie,使用默认参数

func (*Cookie) SetCookie

func (c *Cookie) SetCookie(key, value, domain, path string, maxAge int, httpOnly ...bool)

设置cookie,带详细cookie参数

func (*Cookie) SetSessionId

func (c *Cookie) SetSessionId(sessionid string)

设置SessionId

type CookieItem

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

cookie项

type Domain

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

域名管理器对象

func (*Domain) BindController

func (d *Domain) BindController(pattern string, c Controller) error

控制器注册

func (*Domain) BindControllerMethod

func (d *Domain) BindControllerMethod(pattern string, c Controller, methods string) error

控制器方法注册,methods参数区分大小写

func (*Domain) BindControllerRest

func (d *Domain) BindControllerRest(pattern string, c Controller) error

RESTful控制器注册

func (*Domain) BindHandler

func (d *Domain) BindHandler(pattern string, handler HandlerFunc) error

注意该方法是直接绑定方法的内存地址,执行的时候直接执行该方法,不会存在初始化新的控制器逻辑

func (*Domain) BindHookHandler

func (d *Domain) BindHookHandler(pattern string, hook string, handler HandlerFunc) error

绑定指定的hook回调函数, hook参数的值由ghttp server设定,参数不区分大小写 目前hook支持:Init/Shut

func (*Domain) BindHookHandlerByMap

func (d *Domain) BindHookHandlerByMap(pattern string, hookmap map[string]HandlerFunc) error

通过map批量绑定回调函数

func (*Domain) BindObject

func (d *Domain) BindObject(pattern string, obj interface{}) error

执行对象方法

func (*Domain) BindObjectMethod

func (d *Domain) BindObjectMethod(pattern string, obj interface{}, methods string) error

执行对象方法注册,methods参数不区分大小写

func (*Domain) BindObjectRest

func (d *Domain) BindObjectRest(pattern string, obj interface{}) error

RESTful执行对象注册

func (*Domain) BindStatusHandler

func (d *Domain) BindStatusHandler(status int, handler HandlerFunc)

绑定指定的状态码回调函数

func (*Domain) BindStatusHandlerByMap

func (d *Domain) BindStatusHandlerByMap(handlerMap map[int]HandlerFunc)

通过map批量绑定状态码回调函数

type HandlerFunc

type HandlerFunc func(r *Request)

HTTP注册函数

type HandlerItem

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

http回调函数注册信息

type HandlerMap

type HandlerMap map[string]*HandlerItem

域名、URI与回调函数的绑定记录表

type Request

type Request struct {
	http.Request

	Id        int         // 请求id(唯一)
	Server    *Server     // 请求关联的服务器对象
	Cookie    *Cookie     // 与当前请求绑定的Cookie对象(并发安全)
	Session   *Session    // 与当前请求绑定的Session对象(并发安全)
	Response  *Response   // 对应请求的返回数据操作对象
	Router    *Router     // 匹配到的路由对象
	EnterTime int64       // 请求进入时间(微秒)
	LeaveTime int64       // 请求完成时间(微秒)
	Param     interface{} // 开发者自定义参数
	// contains filtered or unexported fields
}

请求对象

func (*Request) Exit

func (r *Request) Exit()

退出当前请求执行,原理是在Request.exit做标记,由服务逻辑流程做判断,自行停止

func (*Request) Get

func (r *Request) Get(k string) string

获得指定名称的参数字符串(GET/POST),同 GetRequestString 这是常用方法的简化别名

func (*Request) GetClientIp

func (r *Request) GetClientIp() string

获取请求的客户端IP地址

func (*Request) GetHost

func (r *Request) GetHost() string

获取请求的服务端IP/域名

func (*Request) GetJson

func (r *Request) GetJson() *gjson.Json

获取原始json请求输入字符串,并解析为json对象

func (*Request) GetPost

func (r *Request) GetPost(k string) []string

获得post参数

func (*Request) GetPostArray

func (r *Request) GetPostArray(k string) []string

func (*Request) GetPostBool

func (r *Request) GetPostBool(k string) bool

func (*Request) GetPostFloat32

func (r *Request) GetPostFloat32(k string) float32

func (*Request) GetPostFloat64

func (r *Request) GetPostFloat64(k string) float64

func (*Request) GetPostInt

func (r *Request) GetPostInt(k string) int

func (*Request) GetPostMap

func (r *Request) GetPostMap(defaultMap ...map[string]string) map[string]string

获取指定键名的关联数组,并且给定当指定键名不存在时的默认值 需要注意的是,如果其中一个字段为数组形式,那么只会返回第一个元素,如果需要获取全部的元素,请使用GetPostArray获取特定字段内容

func (*Request) GetPostString

func (r *Request) GetPostString(k string) string

func (*Request) GetPostUint

func (r *Request) GetPostUint(k string) uint

func (*Request) GetQuery

func (r *Request) GetQuery(k string) []string

获得指定名称的get参数列表

func (*Request) GetQueryArray

func (r *Request) GetQueryArray(k string) []string

func (*Request) GetQueryBool

func (r *Request) GetQueryBool(k string) bool

func (*Request) GetQueryFloat32

func (r *Request) GetQueryFloat32(k string) float32

func (*Request) GetQueryFloat64

func (r *Request) GetQueryFloat64(k string) float64

func (*Request) GetQueryInt

func (r *Request) GetQueryInt(k string) int

func (*Request) GetQueryMap

func (r *Request) GetQueryMap(defaultMap ...map[string]string) map[string]string

获取指定键名的关联数组,并且给定当指定键名不存在时的默认值

func (*Request) GetQueryString

func (r *Request) GetQueryString(k string) string

func (*Request) GetQueryUint

func (r *Request) GetQueryUint(k string) uint

func (*Request) GetRaw

func (r *Request) GetRaw() []byte

获取原始请求输入字符串,注意:只能获取一次,读完就没了

func (*Request) GetRequest

func (r *Request) GetRequest(k string) []string

获得post或者get提交的参数,如果有同名参数,那么按照get->post优先级进行覆盖

func (*Request) GetRequestArray

func (r *Request) GetRequestArray(k string) []string

func (*Request) GetRequestBool

func (r *Request) GetRequestBool(k string) bool

func (*Request) GetRequestFloat32

func (r *Request) GetRequestFloat32(k string) float32

func (*Request) GetRequestFloat64

func (r *Request) GetRequestFloat64(k string) float64

func (*Request) GetRequestInt

func (r *Request) GetRequestInt(k string) int

func (*Request) GetRequestMap

func (r *Request) GetRequestMap(defaultMap ...map[string]string) map[string]string

获取指定键名的关联数组,并且给定当指定键名不存在时的默认值 需要注意的是,如果其中一个字段为数组形式,那么只会返回第一个元素,如果需要获取全部的元素,请使用GetRequestArray获取特定字段内容

func (*Request) GetRequestString

func (r *Request) GetRequestString(k string) string

func (*Request) GetRequestUint

func (r *Request) GetRequestUint(k string) uint

func (*Request) IsExited

func (r *Request) IsExited() bool

判断当前请求是否停止执行

func (*Request) WebSocket

func (r *Request) WebSocket() (*WebSocket, error)

获取Web Socket连接对象

type Response

type Response struct {
	ResponseWriter
	Writer *ResponseWriter // io.Writer
	// contains filtered or unexported fields
}

服务端请求返回对象

func (*Response) Buffer

func (r *Response) Buffer() []byte

获取当前缓冲区中的数据

func (*Response) BufferLength

func (r *Response) BufferLength() int

获取当前缓冲区中的数据大小

func (*Response) ClearBuffer

func (r *Response) ClearBuffer()

清空缓冲区内容

func (*Response) OutputBuffer

func (r *Response) OutputBuffer()

输出缓冲区数据到客户端

func (*Response) RedirectTo

func (r *Response) RedirectTo(location string)

返回location标识,引导客户端跳转

func (*Response) SetAllowCrossDomainRequest

func (r *Response) SetAllowCrossDomainRequest(allowOrigin string, allowMethods string, maxAge ...int)

允许AJAX跨域访问

func (*Response) SetBuffer

func (r *Response) SetBuffer(buffer []byte)

手动设置缓冲区内容

func (*Response) Write

func (r *Response) Write(content ...interface{})

返回信息,任何变量自动转换为bytes

func (*Response) WriteJson

func (r *Response) WriteJson(content interface{}) error

返回JSON

func (*Response) WriteJsonP

func (r *Response) WriteJsonP(content interface{}) error

返回JSONP

func (*Response) WriteStatus

func (r *Response) WriteStatus(status int, content ...string)

返回HTTP Code状态码

func (*Response) WriteXml

func (r *Response) WriteXml(content interface{}, rootTag ...string) error

返回XML

func (*Response) Writeln

func (r *Response) Writeln(content ...interface{})

返回信息,末尾增加换行标识符"\n"

type ResponseWriter

type ResponseWriter struct {
	http.ResponseWriter
	Status int // http status
	Length int // response length
}

自定义的ResponseWriter,用于写入流的控制

func (*ResponseWriter) Write

func (w *ResponseWriter) Write(buffer []byte) (int, error)

覆盖父级的WriteHeader方法

func (*ResponseWriter) WriteHeader

func (w *ResponseWriter) WriteHeader(code int)

覆盖父级的WriteHeader方法

type Router

type Router struct {
	Uri      string // 注册时的pattern - uri
	Method   string // 注册时的pattern - method
	Domain   string // 注册时的pattern - domain
	Priority int    // 优先级,用于链表排序,值越大优先级越高
}

路由对象

type Server

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

ghttp.Server结构体

func GetServer

func GetServer(name ...interface{}) *Server

获取/创建一个默认配置的HTTP Server(默认监听端口是80) 单例模式,请保证name的唯一性

func (*Server) BindController

func (s *Server) BindController(pattern string, c Controller) error

绑定控制器,控制器需要实现gmvc.Controller接口 这种方式绑定的控制器每一次请求都会初始化一个新的控制器对象进行处理,对应不同的请求会话

func (*Server) BindControllerMethod

func (s *Server) BindControllerMethod(pattern string, c Controller, methods string) error

这种方式绑定的控制器每一次请求都会初始化一个新的控制器对象进行处理,对应不同的请求会话 第三个参数methods支持多个方法注册,多个方法以英文“,”号分隔,不区分大小写

func (*Server) BindControllerRest

func (s *Server) BindControllerRest(pattern string, c Controller) error

绑定控制器(RESTFul),控制器需要实现gmvc.Controller接口 方法会识别HTTP方法,并做REST绑定处理,例如:Post方法会绑定到HTTP POST的方法请求处理,Delete方法会绑定到HTTP DELETE的方法请求处理 因此只会绑定HTTP Method对应的方法,其他方法不会自动注册绑定 这种方式绑定的控制器每一次请求都会初始化一个新的控制器对象进行处理,对应不同的请求会话

func (*Server) BindHandler

func (s *Server) BindHandler(pattern string, handler HandlerFunc) error

注意该方法是直接绑定函数的内存地址,执行的时候直接执行该方法,不会存在初始化新的控制器逻辑

func (*Server) BindHookHandler

func (s *Server) BindHookHandler(pattern string, hook string, handler HandlerFunc) error

绑定指定的hook回调函数, pattern参数同BindHandler,支持命名路由;hook参数的值由ghttp server设定,参数不区分大小写

func (*Server) BindHookHandlerByMap

func (s *Server) BindHookHandlerByMap(pattern string, hookmap map[string]HandlerFunc) error

通过map批量绑定回调函数

func (*Server) BindObject

func (s *Server) BindObject(pattern string, obj interface{}) error

绑定对象到URI请求处理中,会自动识别方法名称,并附加到对应的URI地址后面 需要注意对象方法的定义必须按照ghttp.HandlerFunc来定义

func (*Server) BindObjectMethod

func (s *Server) BindObjectMethod(pattern string, obj interface{}, methods string) error

绑定对象到URI请求处理中,会自动识别方法名称,并附加到对应的URI地址后面 第三个参数methods支持多个方法注册,多个方法以英文“,”号分隔,区分大小写

func (*Server) BindObjectRest

func (s *Server) BindObjectRest(pattern string, obj interface{}) error

绑定对象到URI请求处理中,会自动识别方法名称,并附加到对应的URI地址后面 需要注意对象方法的定义必须按照ghttp.HandlerFunc来定义

func (*Server) BindStatusHandler

func (s *Server) BindStatusHandler(status int, handler HandlerFunc)

绑定指定的状态码回调函数

func (*Server) BindStatusHandlerByMap

func (s *Server) BindStatusHandlerByMap(handlerMap map[int]HandlerFunc)

通过map批量绑定状态码回调函数

func (*Server) Domain

func (s *Server) Domain(domain string) *Domain

生成一个域名对象

func (*Server) EnableAdmin

func (s *Server) EnableAdmin(pattern ...string)

开启服务管理支持

func (*Server) EnableHTTPS

func (s *Server) EnableHTTPS(certFile, keyFile string) error

开启HTTPS支持,但是必须提供Cert和Key文件

func (*Server) EnablePprof

func (s *Server) EnablePprof(pattern ...string)

开启pprof支持

func (*Server) GetCookieMaxAge

func (s *Server) GetCookieMaxAge() int

获取http server参数 - CookieMaxAge

func (*Server) GetLogHandler

func (s *Server) GetLogHandler() func(r *Request, error ...interface{})

获取日志写入的回调函数

func (*Server) GetLogPath

func (s *Server) GetLogPath() string

获取日志目录

func (*Server) GetName

func (s *Server) GetName() string

获取

func (*Server) GetSessionIdName

func (s *Server) GetSessionIdName() string

获取http server参数 - SessionIdName

func (*Server) GetSessionMaxAge

func (s *Server) GetSessionMaxAge() int

获取http server参数 - SessionMaxAge

func (*Server) IsAccessLogEnabled

func (s *Server) IsAccessLogEnabled() bool

access log日志功能是否开启

func (*Server) IsErrorLogEnabled

func (s *Server) IsErrorLogEnabled() bool

error log日志功能是否开启

func (*Server) Restart

func (s *Server) Restart(newExeFilePath ...string) error

重启Web Server,参数支持自定义重启的可执行文件路径,不传递时默认和原有可执行文件路径一致。 针对*niux系统: 平滑重启 针对windows : 完整重启

func (*Server) Run

func (s *Server) Run() error

阻塞执行监听

func (*Server) SetAccessLogEnabled

func (s *Server) SetAccessLogEnabled(enabled bool)

设置是否开启access log日志功能

func (*Server) SetAddr

func (s *Server) SetAddr(addr string) error

设置http server参数 - Addr

func (*Server) SetConfig

func (s *Server) SetConfig(c ServerConfig) error

http server setting设置 注意使用该方法进行http server配置时,需要配置所有的配置项,否则没有配置的属性将会默认变量为空

func (*Server) SetCookieMaxAge

func (s *Server) SetCookieMaxAge(maxage int)

设置http server参数 - CookieMaxAge

func (*Server) SetErrorLogEnabled

func (s *Server) SetErrorLogEnabled(enabled bool)

设置是否开启error log日志功能

func (*Server) SetHTTPSAddr

func (s *Server) SetHTTPSAddr(addr string) error

设置http server参数 - HTTPS Addr

func (*Server) SetHTTPSPort

func (s *Server) SetHTTPSPort(port ...int) error

设置http server参数 - HTTPS Port

func (*Server) SetIdleTimeout

func (s *Server) SetIdleTimeout(t time.Duration) error

设置http server参数 - IdleTimeout

func (*Server) SetIndexFiles

func (s *Server) SetIndexFiles(index []string) error

设置http server参数 - IndexFiles,默认展示文件,如:index.html, index.htm

func (*Server) SetIndexFolder

func (s *Server) SetIndexFolder(index bool) error

允许展示访问目录的文件列表

func (*Server) SetLogHandler

func (s *Server) SetLogHandler(handler func(r *Request, error ...interface{}))

设置日志写入的回调函数

func (*Server) SetLogPath

func (s *Server) SetLogPath(path string) error

设置日志目录

func (*Server) SetMaxHeaderBytes

func (s *Server) SetMaxHeaderBytes(b int) error

设置http server参数 - MaxHeaderBytes

func (*Server) SetPort

func (s *Server) SetPort(port ...int) error

设置http server参数 - Port

func (*Server) SetReadTimeout

func (s *Server) SetReadTimeout(t time.Duration) error

设置http server参数 - ReadTimeout

func (*Server) SetServerAgent

func (s *Server) SetServerAgent(agent string) error

设置http server参数 - ServerAgent

func (*Server) SetServerRoot

func (s *Server) SetServerRoot(root string) error

设置http server参数 - ServerRoot

func (*Server) SetSessionIdName

func (s *Server) SetSessionIdName(name string)

设置http server参数 - SessionIdName

func (*Server) SetSessionMaxAge

func (s *Server) SetSessionMaxAge(maxage int)

设置http server参数 - SessionMaxAge

func (*Server) SetWriteTimeout

func (s *Server) SetWriteTimeout(t time.Duration) error

设置http server参数 - WriteTimeout

func (*Server) Shutdown

func (s *Server) Shutdown() error

关闭Web Server

func (*Server) Start

func (s *Server) Start() error

作为守护协程异步执行(当同一进程中存在多个Web Server时,需要采用这种方式执行) 需要结合Wait方式一起使用

type ServerConfig

type ServerConfig struct {
	Addr           string       // 监听IP和端口,监听本地所有IP使用":端口"(支持多个地址,使用","号分隔)
	HTTPSAddr      string       // HTTPS服务监听地址(支持多个地址,使用","号分隔)
	HTTPSCertPath  string       // HTTPS证书文件路径
	HTTPSKeyPath   string       // HTTPS签名文件路径
	Handler        http.Handler // 默认的处理函数
	ReadTimeout    time.Duration
	WriteTimeout   time.Duration
	IdleTimeout    time.Duration
	MaxHeaderBytes int // 最大的header长度

	IndexFiles  []string // 默认访问的文件列表
	IndexFolder bool     // 如果访问目录是否显示目录列表
	ServerAgent string   // server agent
	ServerRoot  string   // 服务器服务的本地目录根路径
}

HTTP Server 设置结构体

func DefaultSetting

func DefaultSetting() ServerConfig

获取默认的http server设置

type Session

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

单个session对象

func GetSession

func GetSession(r *Request) *Session

获取或者生成一个session对象

func (*Session) BatchSet

func (s *Session) BatchSet(m map[string]interface{})

批量设置

func (*Session) Data

func (s *Session) Data() map[string]interface{}

获取当前session所有数据

func (*Session) Get

func (s *Session) Get(k string) interface{}

获取session

func (*Session) GetBool

func (s *Session) GetBool(k string) bool

func (*Session) GetFloat32

func (s *Session) GetFloat32(k string) float32

func (*Session) GetFloat64

func (s *Session) GetFloat64(k string) float64

func (*Session) GetInt

func (s *Session) GetInt(k string) int

func (*Session) GetString

func (s *Session) GetString(k string) string

func (*Session) GetUint

func (s *Session) GetUint(k string) uint

func (*Session) Id

func (s *Session) Id() string

获取sessionid

func (*Session) Remove

func (s *Session) Remove(k string)

删除session

func (*Session) Set

func (s *Session) Set(k string, v interface{})

设置session

func (*Session) UpdateExpire

func (s *Session) UpdateExpire()

更新过期时间(如果用在守护进程中长期使用,需要手动调用进行更新,防止超时被清除)

type WebSocket

type WebSocket struct {
	*websocket.Conn
}

Jump to

Keyboard shortcuts

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