首页 > 其他分享 >gin框架中间件

gin框架中间件

时间:2023-04-10 21:34:14浏览次数:40  
标签:Context 框架 中间件 user func router gin

前言:

中间件 middleware,也是一种处理器。主要用于在多个业务逻辑中间重用代码,例如认证校验,日志处理等。

中间件需要附加在路由上,使用 router.Use() 方法

 

正文:

gin.Default() 初始化路由对象时,会随之附加两个中间件 Logger 和 Recovery

gin.New()  创建空白路由  没有任何中间件

 

全局中间件

全局中间件定义在路由之前,全局中间件之后的路由都会生效。

 

中间件实例:全局中间件

//中间件定义方法1
func loginMiddleware(c *gin.Context) {
    c.String(http.StatusOK, "this is login middleware 。。。\n")
}
//中间件定义方法2
func loginoutMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        c.String(http.StatusOK, "loginout middleware .... \n")
    }
}
func main() {
    router := gin.Default()
    //使用中间件
    //router.Use(loginMiddleware) //使用单个中间件
    router.Use(loginMiddleware, loginoutMiddleware()) //使用多个中间件

    router.GET("/", func(c *gin.Context) {
        c.String(200, "hello  this is index ")
    })

    router.Run()
}

 

局部中间件

局部中间件,定义在单个路由上,只针对部分路由起作用

 

中间件实例:局部中间件

 

可绑定多个中间件

router.GET("/user", loginMiddleware,loginoutMiddleware(), func(c *gin.Context) {

c.String(200, "hello  this is user ")

})

路由组绑定中间件

user := router.Group("user", loginMiddleware)

 

// 中间件定义方法1
func loginMiddleware(c *gin.Context) {
    c.String(http.StatusOK, "this is login middleware ...\n")
}

// 中间件定义方法2
func loginoutMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        c.String(http.StatusOK, "loginout middleware .... \n")
    }
}

func main() {
    router := gin.Default()
    router.GET("/", func(c *gin.Context) {
        c.String(200, "hello  this is index ")
    })
    //局部中间件1
    router.GET("/user", loginMiddleware,loginoutMiddleware(), func(c *gin.Context) {
        c.String(200, "hello  this is user ")
    })
    //局部中间件2
    router.GET("/goods", loginoutMiddleware(), func(c *gin.Context) {
        c.String(200, "hello  this is goods ")
    })
    //路由组使用中间件3
    user := router.Group("user", loginMiddleware)
    {
        user.GET("list", func(c *gin.Context) {
            c.String(http.StatusOK, "hello user list")
        })

        user.GET("add", func(c *gin.Context) {
            c.String(http.StatusOK, "hello user add")
        })
    }
    router.Run()
}

 

完结

 

标签:Context,框架,中间件,user,func,router,gin
From: https://www.cnblogs.com/ypeih/p/17304374.html

相关文章

  • ES框架--ES评分规则详解
    一、需求因为需要对搜索结果进行一个统一化的评分,因此需要仔细研究ES本身的评分规则从而想办法把评分统一。省流:无法确切统一化二、ES查询评分规则之前有说过ES的查询评分原理,那么仔细思考之后就会发现,长文本搜索对应的score会比短文本搜索的score高很多:score=单个分词评分之和,长......
  • ES搜索框架--自定义评分规则
    一、评分规则需求按照用户画像(不同的标签分数)和用户省份在用户查询时,对查询结果进行自定义评分二、ES自定义评分方式参考:博客:https://blog.csdn.net/W2044377578/article/details/128636611官网:https://www.elastic.co/guide/en/elasticsearch/guide/master/function-score-query.......
  • Nginx upstream采集
    因为nginx无论是开启模块还是添加模块都需要重新编译,我们首先做一些准备工作。测试环境操作系统:CentOS7.2安装依赖这些依赖是我这个环境下的,你可以根据自己的环境安装对应的依赖。yuminstall-ypatchyuminstall-ygdgd-develyuminstall-ylibxslt-develyuminstal......
  • java 日志框架总结
    日志级别ALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFFALL:最低等级的,用于打开所有日志记录。TRACE:designatesfiner-grainedinformationaleventsthantheDEBUG.Since:1.2.12,很低的日志级别,一般不会使用。DEBUG:指出细粒度信息事件对调试应用程序是非常有帮......
  • flask框架05 信号 flask-script命令 sqlalchemy创建操作数据表
    今日内容详细目录今日内容详细1信号1.1django信号2flask-script3sqlalchemy快速使用4sqlalchemy介绍和快速使用4.1sqlalchemy介绍和快速使用5创建操作数据表1信号#Flask框架中的信号基于blinker(安装这个模块),其主要就是让开发者可是在flask请求过程中定制一些用户行为......
  • AtCoder Beginner Contest 247(E,F)
    AtCoderBeginnerContest247(E,F)E(思维)E这个题大意就是给一个长度为\(n\)的数组,一个\(x\)和一个\(y\),问这个数组里面可以找到多少段\([l,r]\)满足这一段里面的最大值是\(x\),最小值是\(y\)这里的做法是固定最右端,寻找最左端的可能的数量,最后相加对于每一个位置,都有作为最......
  • 使用 Nginx 实现域名解析到不同端口的应用
    作为个人网站的服务器,一般都是一台。上面部署了各种应用,都是不同的端口。但是域名只能解析到80端口,而且如果你使用隐形URL转发的话,又需要另外加钱(TX的就是几百块一条....),这就很尴尬了。另一种显性URL又会直接301跳转,体验非常不好。这可如何是好呢?这就需要用到Nginx做反向代理了......
  • python的pytest框架
    pytest和unittest的区别:1.安装需求不同。pytest为第三方单元测试库,需额外安装;unittest为标准库,无需额外安装。2.用例编写规则不同。pytest编写规则较为简单,兼容性较好;unittest需按照固定的格式编写,较为复杂。 pytest优点:能够支持简单的单元测试和复杂的功能测试,还可以用来做s......
  • Webpack中手动实现Loader与Plugin
    Loaderloader是一个转换器,用于对源代码进行转换。工作流程webpack.config.js里配置了一个模块的Loader;2.遇到相应模块文件时,触发了该模块的loader;3.loader接受了一个表示该模块文件内容的source;4.loader使用webapck提供的一系列api对source进行转换,......
  • Nginx安装
    一、Nginx安装1、依赖包yuminstall-ygcc-c++pcrepcre-develzlibzlib-developensslopenssl-develwgetvimtelnetnet-tools2、下载1.22.0版本安装包cd/opt/soft&&wgethttp://nginx.org/download/nginx-1.22.0.tar.gz3、解压tar-zxvfnginx-1.22.0.tar.g......