echoを触ってみる

よく見かける。触ってみる。

echoとは

GOでAPIが書ける軽量フレームワーク。

Hello world

go mod init

$ go mod init github.com/shmn7iii/go_tutorial_echo

go get

$ go get -u github.com/labstack/echo

main.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")) }

run main.go

$ go run main.go ____ __ / __/___/ / ___ / _// __/ _ \/ _ \ /___/\__/_//_/\___/ v3.3.10-dev High performance, minimalist Go web framework https://echo.labstack.com ____________________________________O/_______ O\ ⇨ http server started on [::]:1323

かわいい。

これでlocalhost:1323でHello worldが出るようになった。

かんたん。

GET

GETリクエストを受けてJSONを返すようにしてみる。

main.go

package main import ( "net/http" "github.com/labstack/echo" ) // ユーザーを表す構造体 type User struct { Name string `json:"name"` Email string `json:"email"` } func main() { // echoを生成 e := echo.New() // /userにGETが来たらshowに飛ばす e.GET("/user", show) e.Logger.Fatal(e.Start(":1323")) } func show(c echo.Context) error { // Userを新規作成 u := new(User) // 引数cをUserにbind? if err := c.Bind(u); err != nil { return err } // HTTP Status OKでUserをJSONで返す return c.JSON(http.StatusOK, u) }

http://localhost:1323/user?name=HayatoShimamura&[email protected]

に接続すると

{"name":"HayatoShimamura","email":"[email protected]"}

が返ってくる。パラメーターで渡した名前とメアドをちゃんと認識して返してくれてる。

GETをPOSTに変えるだけでPOSTも実装可能。

まとめ

使いやすそう。

参考