栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

go的gin框架的中间件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

go的gin框架的中间件

1.中间件

中间件也叫拦截器或者过滤器,这些中间件会在路由之前执行,以此完成一些特定功能,比如打印日志啊、登录认证、权限认证、错误返回等。


2.全局中间件

注册全局中间件后,此路由所有接口执行之前都会执行此中间件

// 定义中间
func MIddle1() gin.HandlerFunc {
	return func(c *gin.Context) {
		fmt.Println("中间件开始执行了")
		// 设置变量到Context的key中,可以通过Get()取
		c.Set("request", "中间件")
		status := c.Writer.Status()
		fmt.Println("中间件执行完毕", status)
	}
}

func main() {
	// 1.创建路由
	r := gin.Default()
	// 注册中间件
	r.Use(MIddle1())
	{
		r.GET("/middle", func(c *gin.Context) {
			fmt.Println("middleq请求")
			// 取值
			req, _ := c.Get("request")
			fmt.Println("request:", req)
			// 页面接收
			c.JSON(200, gin.H{"request": req})
		})

	}
	r.Run()
}

3.局部中间件

局部中间件只会在本接口执行之前执行此中间件

// 定义中间
func MIddle1() gin.HandlerFunc {
	return func(c *gin.Context) {
		fmt.Println("中间件开始执行了")
		// 设置变量到Context的key中,可以通过Get()取
		c.Set("request", "中间件")
		status := c.Writer.Status()
		fmt.Println("中间件执行完毕", status)
	}
}

func main() {
	// 1.创建路由
	r := gin.Default()
	{
		r.GET("/middle",MIddle1(), func(c *gin.Context) {
			fmt.Println("middleq请求")
			// 取值
			req, _ := c.Get("request")
			fmt.Println("request:", req)
			// 页面接收
			c.JSON(200, gin.H{"request": req})
		})

	}
	r.Run()
}


4.c.Next()函数介绍

如果中间件调用了c.Next(),这意味着在c.Next()后会将请求处理程序传递给下一个中间件或者http请求,等到下个步骤处理完成后再回到c.Next()函数后执行
    1).在一个中间函数中添加c.Next()
    2).在多个中间函数中全部添加c.Next()


    3).在多个中间函数中部分添加c.Next()


代码:

 // 1号中间
func MIddle1(c *gin.Context) {
   	fmt.Println("MIddle1中间件开始执行了")
   	c.Next()
   	fmt.Println("MIddle1中间件执行完毕")
}
// 2号中间
func MIddle2(c *gin.Context) {
   	fmt.Println("MIddle2中间件开始执行了")
   	c.Next()
   	fmt.Println("MIddle2中间件执行完毕")
}
// 3号中间
func MIddle3(c *gin.Context) {
   	fmt.Println("MIddle3中间件开始执行了")
   	c.Next()
   	fmt.Println("MIddle3中间件执行完毕")
}

func main() {
   // 1.创建路由
   r := gin.Default()
   r.Use(MIddle1,MIddle2,MIddle3)
   {
   	r.GET("/middle", func(c *gin.Context) {
   		fmt.Println("middle处理")
   		// 页面接收
   		c.JSON(200, gin.H{"request": "ok"})
   	})

   }
   r.Run()
}

一些第三方中间件

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/716708.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号