MyDocs

# echoでmiddlewareを実装する

公式ドキュメントを参考に今回はアクセスの回数をログに出力する middleware を実装する。

middleware は echo.HandlerFunc を返す関数を作れば良さそう。

package main

import (
	"fmt"
	"sync"

	"github.com/labstack/echo/v4"
)

type Counter struct {
	mutex sync.Mutex
	value int
}

var counter = new(Counter)

func accessCounter(next echo.HandlerFunc) echo.HandlerFunc {
	return func(c echo.Context) error {
		counter.mutex.Lock()
		counter.value++
		counter.mutex.Unlock()
		fmt.Println(counter.value)
		return next(c)
	}
}

func main() {
	e := echo.New()

	e.Use(accessCounter)
	e.Start(":8080")
}