简介
中间件为过滤进入应用程序的 HTTP 请求提供了一种方便的机制。例如一个中间件来验证用户的身份认证。如果用户没有通过身份认证,中间件会将用户重定向到登录界面。但是,如果用户被认证,中间件将允许该请求进一步进入该应用。
当然,除了身份认证以外,还可以编写另外的中间件来执行各种任务。例如:CORS 中间件可以负责为所有离开应用的响应添加合适的头部信息;日志中间件可以记录所有传入应用的请求。
目录
app/http/middlewares
执行流程
入口->中间件1(before)->中间件N(before)->控制器->中间件N(after)->中间件1(after)—>结束
中间件定义
示例代码
func TokenHandler(c *gin.Context) {
//before request
CheckToken()//检测请求中的token是否合法
c.Next() //执行下一个中间件或者控制器逻辑
//after request
ResetToken()//重置返回的token
}
中间件使用
结合路由模块使用中间件
func RegisterRoute(router *gin.Engine) {
//middleware: 服务错误处理 => 生成请求id => access log
router.Use(middlewares.ServerRecovery(), middlewares.TokenHanlder)
router.NoRoute(controllers.Error404)
router.GET("/hello", controllers.HandleHello)
//api版本
v1 := router.Group("/v1")
{
v1.Use(middlewares.Auth)
v1.GET("/banner_list", controllers.GetBannerList)
}
}