1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

Echoでルーティングをグループ化して、それに対してミドルウェアを追加するのにはどうやってやるのだろうと疑問に思ったので、調べてみました。

コード

まず、/admin以下をグループ化するために、g := e.Group("/admin") を追加。
またさらにadminの中でもグループ化したい場合は、g2 := g.Group("/users")と書く。
そして、グループ化の宣言の後にミドルウェアを追加してやる。

package main

import (
	"log"

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

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

	e.GET("/", func(c echo.Context) error {
		return c.String(200, "Hello, World!")
	})

	g := e.Group("/admin")
	// ログミドルウェアを追加
	g.Use(func(next echo.HandlerFunc) echo.HandlerFunc {
		return func(c echo.Context) error {
			log.Printf("Admin Middleware")
			return next(c)
		}
	})
	g.GET("/dashboard", func(c echo.Context) error {
		return c.String(200, "Admin Dashboard")
	})
	g.GET("/settings", func(c echo.Context) error {
		return c.String(200, "Admin Settings")
	})

	g2 := g.Group("/users")
	// ログミドルウェアを追加
	g2.Use(func(next echo.HandlerFunc) echo.HandlerFunc {
		return func(c echo.Context) error {
			log.Printf("Admin Users Middleware")
			return next(c)
		}
	})
	g2.GET("/list", func(c echo.Context) error {
		return c.String(200, "User List")
	})
	g2.GET("/create", func(c echo.Context) error {
		return c.String(200, "User Create")
	})

	e.Logger.Fatal(e.Start(":8080"))
}

動かしてみる

curl http://localhost:8080/admin/dashboard

Admin Dashboard%
2024/07/12 10:08:28 Admin Middleware

users以下にアクセスすると、adminとusersの両方のミドルウェアが適用される。

curl http://localhost:8080/admin/users/list

Admin Users List%
2024/07/12 10:10:22 Admin Middleware
2024/07/12 10:10:22 Admin Users Middleware

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?