ユーザーアイコン

mizuko

3か月前

0
0

Go + Ginでmiddlewareの仕組みを作る

Go
Gin

ディレクトリ構成については、こちらに記載。

adapter/http/middlewareに以下の様なmiddlewareの処理を実装

errorhandler.go

package middleware import ( "fmt" "net/http" "github.com/gin-gonic/gin" "hoge/logger" ) func ErrorHandler() gin.HandlerFunc { return func(c *gin.Context) { defer func() { if err := recover(); err != nil { logger.Error("Panic: %v", fmt.Errorf("unknown panic: %v", err)) // カスタムエラーレスポンスを返す c.JSON(http.StatusInternalServerError, gin.H{ "status": http.StatusInternalServerError, "message": "Internal Server Error", }) c.Abort() } }() c.Next() } }

adapter/http/router/router.go

~ 略 ~ func (r *Router) SetupRoutes(e *gin.Engine) { e.Use(middleware.ErrorHandler()) ~ 略 ~