よく見かける。触ってみる。
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も実装可能。
まとめ
使いやすそう。
参考