gin怎么写个简单的中间件

编程

gin 写个简单中间件,直接上例子:

func GinServer() {

engine := gin.Default()

engine.Use(TestMiddleware)

engine.GET("/", func(context *gin.Context) {

context.JSON(http.StatusOK, "test")

})

engine.Run(":8080")

}

func TestMiddleware(context *gin.Context) {

fmt.Println("这是一个简单的中间件")

}

这个例子最主要的方法是Use,看下Use方法

// Use attaches a global middleware to the router. ie. the middleware attached though Use() will be

// included in the handlers chain for every single request. Even 404, 405, static files...

// For example, this is the right place for a logger or error management middleware.

func (engine *Engine) Use(middleware ...HandlerFunc) IRoutes {

engine.RouterGroup.Use(middleware...)

engine.rebuild404Handlers()

engine.rebuild405Handlers()

return engine

}

在Use中添加中间件是作用于路由上,并且Use接受参数是一个HandlerFunc 切片,可以添加多个中间件,组成一个 chain,所以在添加中间件的时候也要主要顺序。不同的路由组也可以添加不同的中间件,这点上gin很灵活的处理了路由。如下代码,在不同的路由组中定义不用中间件:

v1 := engine.Group("v1/")

v1.Use(TestMiddleware1)

{

v1.GET("ping", func(context *gin.Context) {

context.String(http.StatusOK,"成功")

})

}

v2 := engine.Group("v2/")

v2.Use(TestMiddleware3)

{

v2.GET("ping", func(context *gin.Context) {

context.String(http.StatusOK,"成功1")

})

}

gin的路由组概念在写api 的时候非常的灵活。

以上是 gin怎么写个简单的中间件 的全部内容, 来源链接: utcz.com/z/519057.html

回到顶部