gin注册自定义中间件失效

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
性能测试 PTS,5000VUM额度
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 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
}
相关文章
|
7月前
|
中间件
gin中间件(Use)不能写在响应函数之后的原因——源码分析
gin中间件(Use)不能写在响应函数之后的原因——源码分析
114 0
|
2月前
|
数据采集 中间件 开发者
Scrapy爬虫框架-自定义中间件
Scrapy爬虫框架-自定义中间件
61 1
|
5月前
|
消息中间件 存储 负载均衡
中间件注册与订阅
【7月更文挑战第1天】
72 2
|
6月前
|
JSON 中间件 数据格式
Gin框架学习笔记(五) ——文件上传与路由中间件
Gin框架学习笔记(五) ——文件上传与路由中间件
|
存储 缓存 Java
详解Zookeeper(铲屎官)在众多中间件的应用和在Spring Boot业务系统中实现分布式锁和注册中心解决方案
`ZooKeeper `是一个**开放源码的分布式协调服务**,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 分布式应用程序可以基于` Zookeeper` 实现诸如**数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列**等功能。
23131 11
详解Zookeeper(铲屎官)在众多中间件的应用和在Spring Boot业务系统中实现分布式锁和注册中心解决方案
|
开发框架 中间件 .NET
ASP.NET CORE 自定义中间件
ASP.NET CORE 自定义中间件
66 0
|
算法 搜索推荐 中间件
Go Gin web框架的路由原理及中间件原理
Go Gin web框架的路由原理及中间件原理
788 13
Go Gin web框架的路由原理及中间件原理
|
前端开发 中间件 Java
Day05:Gin框架快速入门05 中间件和路由 | 青训营
Day05:Gin框架快速入门05 中间件和路由 | 青训营
|
中间件 API Go
Gin增加超时控制中间件
Gin增加超时控制中间件
|
开发框架 中间件 .NET
asp.net core 自定义中间件【以dapper为例】
asp.net core 自定义中间件【以dapper为例】
182 8