goProject/trunk/framework/webServer/doc.go

83 lines
5.2 KiB
Go
Raw Normal View History

2025-01-06 16:01:02 +08:00
/*
此包提供通用的HTTP/HTTPS服务器功能
使用方法如下
1初始化一个HttpServer/HttpsServer
server := NewHttpServer(addr string, isCheckIP bool)
server := NewHttpsServer(addr, certFileName, keyFileName string, isCheckIP bool)
其中参数说明如下
addr:服务器监听地址
isCheckIP:是否需要验证客户端IP此设置针对所有的请求对于每个请求也可以单独设置以此设置为优先
certFileName:证书文件的路径
keyFileName:密钥文件的路径
2设置server的属性
在服务器运行过程中会有一些默认的行为如果想要改变默认行为可以通过调用以下的方法进行设置
1设定Http Header信息
SetHeader(header map[string]string)
默认的Http Header为空如果设定了Http Header则在每次请求时都会给ResponseWriter加上该header属性
2设定HTTP请求方法
SetMethod(method string)
默认情况下对请求的方法没有任何限制如果设定了Method则只允许该Method访问
3设定当HTTP请求方法无效时调用的处理器
SetInvalidMethodHandler(handler func(*Context))
默认情况下如果请求方法与所设置的方法不一致时会返回406错误如果设置了此属性则会调用此属性进行处理
4设定默认页的处理器
SetDefaultPageHandler(handler func(*Context))
默认页指的是/, /favicon.ico这两个页面默认情况下仅仅是输出Welcome to home page.如果需要针对做一些处理可以设置此属性
5设定未找到指定的回调时的处理器
SetNotFoundPageHandler(handler func(*Context))
当服务器找不到对应的地址的Handler时会返回404错误如果需要处理一些非固定的地址时可以使用此方法比如回调地址中包含AppId所以导致地址可变
6设定在Debug模式下是否需要验证IP地址
SetIfCheckIPWhenDebug(value bool)
默认情况下在DEBUG模式时不验证IP可以通过此属性改变此此行为
7设定当IP无效时调用的处理器
SetIPInvalidHandler(handler func(*Context))
当需要验证IP并且IP无效时默认情况下会返回401错误如果设定了此属性则可以改变该行为
8设定当检测到参数无效时调用的处理器
SetParamInvalidHandler(handler func(*Context))
当检测到参数无效时默认情况下会返回500错误如果设置了此属性则可以改变该行为
9设定处理请求数据的处理器例如压缩解密等
SetRequestDataHandler(handler func(*Context, []byte) ([]byte, error))
如果设定此属性则在处理接收到的请求数据时会调用此属性
10设定处理响应数据的处理器例如压缩加密等
SetResponseDataHandler(handler func(*Context, []byte) ([]byte, error))
如果设定此属性则在处理返回给客户端的数据时会调用此属性
11设定请求执行时间的处理器
SetExecuteTimeHandler(handler func(*Context))
如果在请求结束后想要处理调用的时间则需要设置此属性例如请求时间过长则记录日志等
3注册handler
server.RegisterHandler(path string, handlerFuncObj handlerFunc, configObj *HandlerConfig)
参数如下
// path注册的访问路径
// callback回调方法
// configObjHandler配置对象
例如server.RegisterHandler("/get/notice", getNoticeConfig, &webServer.HandlerConfig{IsCheckIP: false, ParamNameList: []string{"appid"}})
4启动对应的服务器
server.Start(wg *sync.WaitGroup)
5context中提供了很多实用的方法
1GetRequestPath() string获取请求路径该路径不带参数
2GetRequestIP() string获取请求的客户端的IP地址
3GetExecuteSeconds() int64获取请求执行的秒数当然也可以通过获取StartTime, EndTime属性自己进行更高精度的处理
4String() string将context里面的内容进行格式化主要用于记录日志
5FormValue(key string) string获取请求的参数值包括GET/POST/PUT/DELETE等所有参数
6PostFormValue(key string) string获取POST的参数值
7GetFormValueData() typeUtil.MapData获取所有参数的MapData类型包括GET/POST/PUT/DELETE等所有参数
8GetPostFormValueData() typeUtil.MapData获取POST参数的MapData类型
9GetMultipartFormValueData() typeUtil.MapData获取MultipartForm的MapData类型
10GetRequestBytes() (result []byte, exists bool, err error)获取请求字节数据
11GetRequestString() (result string, exists bool, err error)获取请求字符串数据
12Unmarshal(obj interface{}) (exists bool, err error)反序列化为对象JSON
13WriteString(result string)输出字符串给客户端
14WriteJson(result interface{})输出json数据给客户端
15RedirectTo(url string)重定向到其它页面
如果以上的方法不能满足需求则可以调用以下的方法来获取原始的Request/ResponseWriter对象进行处理
16GetRequest() *http.Request获取请求对象
17GetResponseWriter() http.ResponseWriter获取响应对象
*/
package webServer