From c63b43836dd963c74fb839a161dd2491700bda0e Mon Sep 17 00:00:00 2001 From: vCaesar Date: Tue, 10 Jan 2017 20:40:17 +0800 Subject: [PATCH] Update RESTful --- zh/08.3.md | 48 +++++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/zh/08.3.md b/zh/08.3.md index 25da1d15..a77fca44 100644 --- a/zh/08.3.md +++ b/zh/08.3.md @@ -68,41 +68,51 @@ Go没有为REST提供直接支持,但是因为RESTful是基于HTTP协议实现 import ( "fmt" - "github.com/drone/routes" + "github.com/julienschmidt/httprouter" + "log" "net/http" ) - func getuser(w http.ResponseWriter, r *http.Request) { - params := r.URL.Query() - uid := params.Get(":uid") + func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { + fmt.Fprint(w, "Welcome!\n") + } + + func Hello(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { + fmt.Fprintf(w, "hello, %s!\n", ps.ByName("name")) + } + + func getuser(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { + uid := ps.ByName("uid") fmt.Fprintf(w, "you are get user %s", uid) } - func modifyuser(w http.ResponseWriter, r *http.Request) { - params := r.URL.Query() - uid := params.Get(":uid") + func modifyuser(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { + uid := ps.ByName("uid") fmt.Fprintf(w, "you are modify user %s", uid) } - func deleteuser(w http.ResponseWriter, r *http.Request) { - params := r.URL.Query() - uid := params.Get(":uid") + func deleteuser(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { + uid := ps.ByName("uid") fmt.Fprintf(w, "you are delete user %s", uid) } - func adduser(w http.ResponseWriter, r *http.Request) { - uid := r.FormValue("uid") + func adduser(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { + // uid := r.FormValue("uid") + uid := ps.ByName("uid") fmt.Fprintf(w, "you are add user %s", uid) } func main() { - mux := routes.New() - mux.Get("/user/:uid", getuser) - mux.Post("/user/", adduser) - mux.Del("/user/:uid", deleteuser) - mux.Put("/user/:uid", modifyuser) - http.Handle("/", mux) - http.ListenAndServe(":8088", nil) + router := httprouter.New() + router.GET("/", Index) + router.GET("/hello/:name", Hello) + + router.GET("/user/:uid", getuser) + router.POST("/adduser/:uid", adduser) + router.DELETE("/deluser/:uid", deleteuser) + router.PUT("/moduser/:uid", modifyuser) + + log.Fatal(http.ListenAndServe(":8080", router)) } ```