Golang Go 言語の Maritini で JSON (の値) を POST 送信して JSON を返却する

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)に出します。

タイトルとURLをコピーしました