はじめに
Goはインストールしてあるものとします。
echoはGoの軽量フレームワークとして有名です。
Goはフレームワークが群雄割拠しているので、一強なものがあるとわかりやすくていいですよね。
JavaのSpring、RubyのRails的な。
echoの動作確認
echoをインストール
echoをインストールします。
$ go get -u github.com/labstack/echo
Hello, World!
1. 実装
任意のディレクトリに以下のファイルを作成します。
server.go
package main
import (
	"net/http"
	
	"github.com/labstack/echo"
)
func main() {
	e := echo.New()
	e.GET("/", func(c echo.Context) error {
		return c.String(http.StatusOK, "Hello, World!")
	})
	e.Logger.Fatal(e.Start(":1323"))
}
2. 起動
1.でファイルを作成したディレクトリで以下のコマンドを実行します。
$ go run server.go
3. 動作確認
http://localhost:1323/ にアクセスして「Hello, World!」が表示されていることを確認します。
GETパラメータを受け取ってJSONを返す
以下の通りです。
直観的でいいですよね!
server.go
package main
import (
	"net/http"
	"github.com/labstack/echo"
)
type User struct {
	Name  string `json:"name"`
	Email string `json:"email"`
}
func main() {
	e := echo.New()
	e.GET("/user", show)
	e.Logger.Fatal(e.Start(":1323"))
}
func show(c echo.Context) error {
	u := new(User)
	if err := c.Bind(u); err != nil {
		return err
	}
	return c.JSON(http.StatusOK, u)
}
http://localhost:1323/user?name=yagi_eng&email=hoge@gmail.com
などとアクセスすると、以下のようにJSONが返ってきます。
{"name":"yagi_eng","email":"hoge@gmail.com"}
POSTパラメータを受け取ってJSONを返す
GETをPOSTに変えるだけです。
server.go
import (
    "net/http"
 
    "github.com/labstack/echo"
)
 
type User struct {
    Name  string `json:"name"`
    Email string `json:"email"`
}
 
func main() {
    e := echo.New()
    e.POST("/users", display)
 
    e.Logger.Fatal(e.Start(":1323"))
}
 
func display(c echo.Context) error {
    u := new(User)
    if err := c.Bind(u); err != nil {
        return err
    }
    return c.JSON(http.StatusOK, u)
}