From 89fd5b85256e44cce6c6524e8574fb5013eabefe Mon Sep 17 00:00:00 2001 From: lifeiyi <736926938@qq.com> Date: Wed, 8 Apr 2020 11:59:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BA=95=E5=B1=82=E5=87=BD?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/GateService/GateService.go | 24 +++++++++++++++++++++++- sysservice/httpservice.go | 24 ++++++++++++++++++++++-- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/example/GateService/GateService.go b/example/GateService/GateService.go index 393977b..2963a66 100644 --- a/example/GateService/GateService.go +++ b/example/GateService/GateService.go @@ -1,6 +1,7 @@ package GateService import ( + "encoding/json" "fmt" "github.com/duanhf2012/origin/event" "github.com/duanhf2012/origin/network" @@ -25,7 +26,8 @@ func (slf *GateService) OnInit() error{ slf.httpRouter = sysservice.NewHttpHttpRouter(slf) httpervice.SetHttpRouter(slf.httpRouter) - slf.httpRouter.RegRouter(sysservice.METHOD_GET,"/get/query",slf.HttpTest) + slf.httpRouter.GET("/get/query", slf.HttpTest) + slf.httpRouter.POST("/post/query", slf.HttpTestPost) slf.httpRouter.SetServeFile(sysservice.METHOD_GET,"/img/head/","d:/img") return nil } @@ -38,6 +40,26 @@ func (slf *GateService) HttpTest(session *sysservice.HttpSession) { fmt.Print(string(session.GetBody()),"\n",v,"\n",v2) } +func (slf *GateService) HttpTestPost(session *sysservice.HttpSession) { + session.SetHeader("a","b") + v,_:=session.Query("a") + v2,_:=session.Query("b") + + byteBody := session.GetBody() + fmt.Print(string(session.GetBody()),"\n",v,"\n",v2) + + testa := struct { + AA int `json:"aa"` + BB string `json:"bb"` + }{} + json.Unmarshal(byteBody, &testa) + fmt.Println(testa) + + testa.AA = 100 + testa.BB = "this is a test" + session.WriteJson("asdasda") +} + func (slf *GateService) OnEventHandler(ev *event.Event) error{ if ev.Type == event.Sys_Event_Tcp_RecvPack { pPack := ev.Data.(*sysservice.TcpPack) diff --git a/sysservice/httpservice.go b/sysservice/httpservice.go index 07adb7f..6c7c1bb 100644 --- a/sysservice/httpservice.go +++ b/sysservice/httpservice.go @@ -1,6 +1,7 @@ package sysservice import ( + "encoding/json" "fmt" "github.com/duanhf2012/origin/event" "github.com/duanhf2012/origin/network" @@ -51,7 +52,9 @@ type routerServeFileData struct { } type IHttpRouter interface { - RegRouter(method HTTP_METHOD, url string, handle HttpHandle) bool + //RegRouter(method HTTP_METHOD, url string, handle HttpHandle) bool + GET(url string, handle HttpHandle) bool + POST(url string, handle HttpHandle) bool Router(session *HttpSession) PutHttpSession(httpSession *HttpSession) @@ -163,6 +166,15 @@ func (slf *HttpSession) Write(msg []byte) { slf.msg = msg } +func (slf *HttpSession) WriteJson(msgJson interface{}) error { + msg, err := json.Marshal(msgJson) + if err == nil { + slf.Write(msg) + } + + return err +} + func (slf *HttpSession) flush() { slf.w.WriteHeader(slf.statusCode) if slf.msg!=nil { @@ -215,7 +227,15 @@ func (slf *HttpRouter) PutHttpSession(httpSession *HttpSession){ slf.eventReciver.NotifyEvent(&event.Event{Type:event.Sys_Event_Http_Event,Data:httpSession}) } -func (slf *HttpRouter) RegRouter(method HTTP_METHOD, url string, handle HttpHandle) bool{ +func (slf *HttpRouter) GET(url string, handle HttpHandle) bool { + return slf.regRouter(METHOD_GET, url, handle) +} + +func (slf *HttpRouter) POST(url string, handle HttpHandle) bool { + return slf.regRouter(METHOD_POST, url, handle) +} + +func (slf *HttpRouter) regRouter(method HTTP_METHOD, url string, handle HttpHandle) bool{ mapRouter,ok := slf.pathRouter[method] if ok == false{ return false