码农后生

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

GO语言Gin包 (中间件)

router := gin.Default()

/*
func Default() *Engine {
	debugPrintWARNINGDefault()
	engine := New()
	engine.Use(Logger(), Recovery())
	return engine
}
*/
Logger和 Recovery 就是两个中间件。
Logger 是对日志进行记录,而 Recovery 是对有 painc时, 进行 500 的错误处理

自定义中间件

  • 中间件需要返回 gin.HandlerFunc 函数,所以定义返回函数。
  • 中间件有个 Next 函数
  • 定义的众多中间件,会形成一条中间件链,而通过 Next 函数来对后面的中间件进行执行。
package middleware

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"time"
)

func Logger() gin.HandlerFunc {
	return func(context *gin.Context) {
                //Request 请求
		host := context.Request.Host
		url := context.Request.URL
		method := context.Request.Method
		fmt.Printf("%s::%s \t %s \t %s ", time.Now().Format("2006-01-02 15:04:05"), host, url, method)
		context.Next()
		fmt.Println(context.Writer.Status())
	}
}

全局中间件

router := gin.New()
// 添加自定义的 logger 中间件
router.Use(middleware.Logger(), gin.Recovery())
//middleware.Logger(), gin.Recovery()为自定义中间件

局部中间件

  • 某些路由需要登录后才能访问,那么可以给这些路由进行授权管理
userRouter.GET("/profile/", middleware.Auth(), handler.UserProfile)
userRouter.POST("/update", middleware.Auth(), handler.UpdateUserProfile)
//middleware.Auth()为自定义中间件
posted on 2020-11-10 14:48  码农后生  阅读(504)  评论(0编辑  收藏  举报