Hatena::Groupbabel

babel 作業の記録 TP このページをアンテナに追加 RSSフィード

 | 

2014-10-11martini

JSON (の値) を POST 送信して JSON を返却する。

| 20:00 | JSON (の値) を POST 送信して JSON を返却する。 - babel 作業の記録 TP を含むブックマーク はてなブックマーク - JSON (の値) を POST 送信して JSON を返却する。 - babel 作業の記録 TP JSON (の値) を POST 送信して JSON を返却する。 - babel 作業の記録 TP のブックマークコメント

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


mimic28号でした。

akufejeakufeje2019/05/18 15:39http://mewkid.net/buy-amoxicillin/ - Amoxicillin 500mg Capsules <a href="http://mewkid.net/buy-amoxicillin/">Buy Amoxicillin</a> lyv.znmi.babel.g.hatena.ne.jp.hce.uy http://mewkid.net/buy-amoxicillin/

ebinvicohukecebinvicohukec2019/05/18 16:13http://mewkid.net/buy-amoxicillin/ - Amoxicillin Purchase <a href="http://mewkid.net/buy-amoxicillin/">Amoxicillin Online</a> jlv.atsr.babel.g.hatena.ne.jp.mbf.ct http://mewkid.net/buy-amoxicillin/

 |