go언어
글 수 53
Martini의 기본 router를 사용하면 key-value형식으로 된 POST 데이터는 아주 쉽게 받을 수 있습니다.
하지만 POST 데이터를 JSON 형식으로 보내게 된다면 martini의 기본 router를 사용해서는 값을 받을 수 없습니다.
이럴 땐 다음과 같이 하여 JSON 형식으로 된 POST 데이터를 활용할 수 있습니다.
package main import ( "github.com/go-martini/martini" "github.com/martini-contrib/render" "net/http" "io/ioutil" "encoding/json" ) func main() { m := martini.Classic() m.Use(render.Renderer(render.Options{ Layout: "layout", })) data := make(map[string]interface{}) data["hello"] = "안녕" data["world"] = "세계" data["value"] = 1 m.Get("/", func(r render.Render) { r.HTML(200, "hello", data) }) m.Get("/api", func(r render.Render) { r.JSON(200, data) }) m.Post("/api", func(req *http.Request, r render.Render, params martini.Params) { if req.Body != nil { defer req.Body.Close() body, err := ioutil.ReadAll(req.Body) if err != nil { log.Panic(err) } var data interface{} err = json.Unmarshal(body, &init) if err != nil { log.Panic(err) } log.Println(data) } r.Text(200, "") }) m.Run() }