0
点赞
收藏
分享

微信扫一扫

gin注册自定义中间件失效


在使用gin框架的时候,我们经常会用到自定义的中间件,这里有一个需要注意的点

自定义中间件的写法 返回值需要是gin.HandlerFunc

下面为我自定义的一个异常处理器。全局的panic都会走到这里来

func Recover() gin.HandlerFunc {
	return func(c *gin.Context) {
		defer func() {
			if r := recover(); r != nil {
			  //逻辑处理
			}
		}()
		c.Next()
	}
}

在注册全局中间件的时候需要注意 如果要使用自定义的中间件,创建gin引擎时 需要使用gin.New() 如果使用gin.default()就会默认给你带上gin自带的中间件,具体可以看gin源码
最重要的一点,注册自定义中间件一定在配置路由之前进行注册,不然在路由中会不生效

func Default() *Engine {
	debugPrintWARNINGDefault()
	engine := New()
	engine.Use(Logger(), Recovery())
	return engine
}

注册路由部分代码

package routers

import (
	"gin/controller/app"
	"gin/handler"
	"github.com/gin-gonic/gin"
)

// SetupRouter 配置路由信息
func SetupRouter() *gin.Engine {
	r := gin.New()

    //使用自定义中间件handler.Recover()
	r.Use(handler.Recover(), gin.Logger())

	GroupV1 := r.Group("/app")
	{
		GroupV1.Any("/product/UserAdd", app.GetRedis)
		GroupV1.Any("/member/UserAdd", app.UserAdd)
	}

	return r
}


举报

相关推荐

0 条评论