From ea348b07a65f59671398918777cbd227197ca7c2 Mon Sep 17 00:00:00 2001 From: xiaowei <403828237@qq.com> Date: Sun, 13 Feb 2022 11:46:56 +0800 Subject: [PATCH] =?UTF-8?q?add:=20=E6=A8=A1=E4=BB=BFgin=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/framework/framework-context/main.go | 8 +++-- web/framework/framework/gee/gee.go | 45 +++++++++++++++++++++++++ web/framework/framework/main.go | 20 ++++++++++- web/framework/hander-basic/main.go | 2 +- 4 files changed, 71 insertions(+), 4 deletions(-) diff --git a/web/framework/framework-context/main.go b/web/framework/framework-context/main.go index d4e1740..8186bdb 100644 --- a/web/framework/framework-context/main.go +++ b/web/framework/framework-context/main.go @@ -13,9 +13,13 @@ func main() { c.String(200, "hello,%v", c.Query("name")) }) engine.POST("/login", func(c *gee.Context) { + //c.JSON(200, gee.H{ + // "username": "xxxx", + // "password": "1234", + //}) c.JSON(200, gee.H{ - "username": "xxxx", - "password": "1234", + "username": c.PostForm("username"), + "password": c.PostForm("password"), }) }) _ = engine.Run(":9000") diff --git a/web/framework/framework/gee/gee.go b/web/framework/framework/gee/gee.go index 2b44a0d..fbeeb1f 100644 --- a/web/framework/framework/gee/gee.go +++ b/web/framework/framework/gee/gee.go @@ -1 +1,46 @@ package gee + +import ( + "fmt" + "log" + "net/http" +) + +type HandlerFunc func(w http.ResponseWriter, r *http.Request) + +type Engine struct { + router map[string]HandlerFunc +} + +func New() *Engine { + return &Engine{ + router: make(map[string]HandlerFunc), + } +} + +func (e *Engine) addRoute(method string, pattern string, handler HandlerFunc) { + key := method + "-" + pattern + e.router[key] = handler + log.Println(e.router) +} + +func (e *Engine) GET(pattern string, handler HandlerFunc) { + e.addRoute("GET", pattern, handler) +} + +func (e *Engine) POST(pattern string, handler HandlerFunc) { + e.addRoute("POST", pattern, handler) +} + +func (e *Engine) Run(addr string) error { + return http.ListenAndServe(addr, e) +} + +func (e *Engine) ServeHTTP(writer http.ResponseWriter, request *http.Request) { + key := request.Method + "-" + request.URL.Path + if handler, ok := e.router[key]; ok { + handler(writer, request) + } else { + _, _ = fmt.Fprintf(writer, "404 not found:%v\n", request.URL) + } +} diff --git a/web/framework/framework/main.go b/web/framework/framework/main.go index 83af475..403a397 100644 --- a/web/framework/framework/main.go +++ b/web/framework/framework/main.go @@ -1 +1,19 @@ -package framework +package main + +import ( + "fmt" + "golanglearn/web/framework/framework/gee" + "net/http" +) + +func main() { + engine := gee.New() + engine.GET("/", func(w http.ResponseWriter, r *http.Request) { + fmt.Fprintf(w, "hello web frame work") + }) + + engine.GET("/hello", func(w http.ResponseWriter, r *http.Request) { + fmt.Fprintf(w, "hello web frame work") + }) + engine.Run(":9000") +} diff --git a/web/framework/hander-basic/main.go b/web/framework/hander-basic/main.go index 6526dd2..c0618c4 100644 --- a/web/framework/hander-basic/main.go +++ b/web/framework/hander-basic/main.go @@ -11,7 +11,7 @@ type Engine struct { // 实现Handler的ServerHTTP方法 func (e *Engine) ServeHTTP(w http.ResponseWriter, r *http.Request) { - switch r.RequestURI { + switch r.URL.Path { case "/": fmt.Fprint(w, "hello handler-basic") case "/web":