72 lines
1.7 KiB
Go
72 lines
1.7 KiB
Go
|
|
package server_http
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"encoding/json"
|
|||
|
|
"net/http"
|
|||
|
|
|
|||
|
|
. "common/model"
|
|||
|
|
"goutil/debugUtil"
|
|||
|
|
"goutil/logUtil"
|
|||
|
|
"goutil/webUtil"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// http服务对象
|
|||
|
|
type httpServer struct{}
|
|||
|
|
|
|||
|
|
// http应答处理
|
|||
|
|
// response:应答对象
|
|||
|
|
// request:请求对象
|
|||
|
|
func (this *httpServer) ServeHTTP(response http.ResponseWriter, request *http.Request) {
|
|||
|
|
context := newContext(request, response)
|
|||
|
|
responseObj := NewServerResponseObject()
|
|||
|
|
|
|||
|
|
defer func() {
|
|||
|
|
if data := recover(); data != nil {
|
|||
|
|
logUtil.LogUnknownError(data)
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 特殊路径进行特别处理
|
|||
|
|
if request.URL.Path == "/" || request.URL.Path == "/favicon.ico" {
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 获取输入参数的字符串形式
|
|||
|
|
parameter := ""
|
|||
|
|
if len(request.Form) > 0 {
|
|||
|
|
parameter_byte, _ := json.Marshal(request.Form)
|
|||
|
|
parameter = string(parameter_byte)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 记录日志
|
|||
|
|
if debugUtil.IsDebug() || responseObj.ResultStatus != Success {
|
|||
|
|
result, _ := json.Marshal(responseObj)
|
|||
|
|
logUtil.DebugLog("%s-->IP:%s;Request:%v;Response:%s;", request.URL.Path, webUtil.GetRequestIP(request), parameter, string(result))
|
|||
|
|
}
|
|||
|
|
}()
|
|||
|
|
|
|||
|
|
// 特殊路径进行特别处理
|
|||
|
|
if request.URL.Path == "/" || request.URL.Path == "/favicon.ico" {
|
|||
|
|
context.WriteString("ok")
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 验证IP
|
|||
|
|
if rs := context.checkIP(); rs != Success {
|
|||
|
|
context.WriteJson(responseObj.SetResultStatus(rs))
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
var handler Handler
|
|||
|
|
var exists bool
|
|||
|
|
if handler, exists = getHandler(request.URL.Path); !exists {
|
|||
|
|
logUtil.ErrorLog("访问的页面不存在,RequestAddr: %s request.URL.Path: %s", request.RemoteAddr, request.URL.Path)
|
|||
|
|
http.Error(response, "访问的页面不存在", 404)
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 调用处理方法,并返回结果
|
|||
|
|
responseObj = handler(context)
|
|||
|
|
context.WriteJson(responseObj)
|
|||
|
|
}
|