• 简介
  • 目录
  • 执行流程
  • 中间件定义
  • 中间件使用

    简介

    中间件为过滤进入应用程序的 HTTP 请求提供了一种方便的机制。例如一个中间件来验证用户的身份认证。如果用户没有通过身份认证,中间件会将用户重定向到登录界面。但是,如果用户被认证,中间件将允许该请求进一步进入该应用。

    当然,除了身份认证以外,还可以编写另外的中间件来执行各种任务。例如:CORS 中间件可以负责为所有离开应用的响应添加合适的头部信息;日志中间件可以记录所有传入应用的请求。

    目录

    app/http/middlewares

    执行流程

    入口->中间件1(before)->中间件N(before)->控制器->中间件N(after)->中间件1(after)—>结束

    中间件定义

    示例代码

    1. func TokenHandler(c *gin.Context) {
    2. //before request
    3. CheckToken()//检测请求中的token是否合法
    4. c.Next() //执行下一个中间件或者控制器逻辑
    5. //after request
    6. ResetToken()//重置返回的token
    7. }

    中间件使用

    结合路由模块使用中间件

    1. func RegisterRoute(router *gin.Engine) {
    2. //middleware: 服务错误处理 => 生成请求id => access log
    3. router.Use(middlewares.ServerRecovery(), middlewares.TokenHanlder)
    4. router.NoRoute(controllers.Error404)
    5. router.GET("/hello", controllers.HandleHello)
    6. //api版本
    7. v1 := router.Group("/v1")
    8. {
    9. v1.Use(middlewares.Auth)
    10. v1.GET("/banner_list", controllers.GetBannerList)
    11. }
    12. }