import したいので、下記を実行。
$ go get github.com/codegangsta/martini $ go get github.com/martini-contrib/binding $ go get github.com/martini-contrib/render
post_server.go を下記にする。
package main import ( "net/http" "github.com/codegangsta/martini" "github.com/martini-contrib/binding" "github.com/martini-contrib/render" ) type Post struct { Key string `json:"key" binding:"required"` Value string `json:"value"` } func (p Post) Validate(errors *binding.Errors, req *http.Request) { if len(p.Key) < 1 { errors.Add([]string{}, "PostError", "Too short; minimum 1 characters") } else if 120 < len(p.Key) { errors.Add([]string{}, "PostError", "Too long; maximum 120 characters") } } func main() { m := martini.Classic() m.Use(render.Renderer()) m.Post("/api", binding.Json(Post{}), binding.ErrorHandler, func(post Post, r render.Render) { r.JSON(200, map[string]interface{}{"hello": "world"}) }) m.Run() }
$ go run post_server.go [martini] listening on :3000 (development)
別の端末から下記を実行。
$ curl -d '{"key":"1","value":""}' http://localhost:3000/api
content は下記が返却されます。
{"hello":"world"}
色々、拙い実装だとは思いますが、私が良く分から無い所が多い Golang 何で、兎に角、世(blog)に出します。