goProject/trunk/game/common/server_http/server.go
2025-01-15 17:36:12 +08:00

72 lines
1.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)
}