Closed2
Echo のドキュメントを読むぜ
![タピオカ](https://res.cloudinary.com/zenn/image/fetch/s--vFk8bm6i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/e1ae39d5d9.jpeg)
High performance, extensible, minimalist Go web framework
![タピオカ](https://res.cloudinary.com/zenn/image/fetch/s--vFk8bm6i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/e1ae39d5d9.jpeg)
Guide
Hello, World!
基本は以下のようにルーティングとハンドラーを紐付けるような感じ。
server.go
package main
import (
"net/http"
"github.com/labstack/echo/v4"
)
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"))
}
パラメータの参照
c.Param("id")
で Path Parameter、c.QueryParam("team")
で Query Parameter を参照できる。
// e.GET("/users/:id", getUser)
func getUser(c echo.Context) error {
id := c.Param("id")
team := c.QueryParam("team")
return c.String(http.StatusOK, "User: " + id + " Team: " + team)
}
Handling Request
構造体タグを用いて構造体のフィールドとリクエストパラメータの紐付けを定義しておくことで、c.Bind(u)
で自動的に構造体にデータを格納できる。
type User struct {
Name string `json:"name" xml:"name" form:"name" query:"name"`
Email string `json:"email" xml:"email" form:"email" query:"email"`
}
// e.POST("/users", createUser)
func createUser(c echo.Context) error {
u := new(User)
if err := c.Bind(u); err != nil {
return err
}
return c.JSON(http.StatusCreated, u)
}
Middleware
Root level, Group level, Route level で middleware を差し込める。
// Root level
e.Use(middleware.Logger())
// Group level
g := e.Group("/admin")
g.Use(middleware.Logger())
// Route level
e.GET("/users", getUsers, middleware.Logger())
このスクラップは5ヶ月前にクローズされました