Closed2

Echo のドキュメントを読むぜ

タピオカタピオカ

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ヶ月前にクローズされました