随笔 - 35  文章 - 20 评论 - 0 阅读 - 3509
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

路由中间件main.go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package main
 
import (
    "fmt"
    "html/template"
    "time"
 
    "github.com/gin-gonic/gin"
)
 
//时间戳转换成日期
func UnixToTime(timestamp int) string {
    fmt.Println(timestamp)
    t := time.Unix(int64(timestamp), 0)
    return t.Format("2006-01-02 15:04:05")
}
func initMiddlewareOne(c *gin.Context) {
 
    fmt.Println("1-我是一个中间件-initMiddlewareOne")
    //调用该请求的剩余处理程序
    c.Next()
 
    fmt.Println("2-我是一个中间件-initMiddlewareOne")
 
}
func initMiddlewareTwo(c *gin.Context) {
 
    fmt.Println("1-我是一个中间件-initMiddlewareTwo")
    //调用该请求的剩余处理程序
    c.Next()
 
    fmt.Println("2-我是一个中间件-initMiddlewareTwo")
 
}
 
func main() {
    // 创建一个默认的路由引擎
    r := gin.Default()
    //自定义模板函数  注意要把这个函数放在加载模板前
    r.SetFuncMap(template.FuncMap{
        "UnixToTime": UnixToTime,
    })
    //加载模板 放在配置路由前面
    r.LoadHTMLGlob("templates/**/*")
    //配置静态web目录   第一个参数表示路由, 第二个参数表示映射的目录
    r.Static("/static", "./static")
 
    r.GET("/", initMiddlewareOne, initMiddlewareTwo, func(c *gin.Context) {
        fmt.Println("这是一个首页")
        c.String(200, "gin首页")
    })
 
    r.GET("/news", func(c *gin.Context) {
        c.String(200, "新闻页面")
    })
    r.GET("/login", func(c *gin.Context) {
        c.String(200, "login")
    })
 
    r.Run()
}

  

全局中间件main.go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package main
 
import (
    "fmt"
    "html/template"
    "time"
 
    "github.com/gin-gonic/gin"
)
 
//时间戳转换成日期
func UnixToTime(timestamp int) string {
    fmt.Println(timestamp)
    t := time.Unix(int64(timestamp), 0)
    return t.Format("2006-01-02 15:04:05")
}
func initMiddlewareOne(c *gin.Context) {
 
    fmt.Println("1-我是一个中间件-initMiddlewareOne")
    //调用该请求的剩余处理程序
    c.Next()
 
    fmt.Println("2-我是一个中间件-initMiddlewareOne")
 
}
func initMiddlewareTwo(c *gin.Context) {
 
    fmt.Println("1-我是一个中间件-initMiddlewareTwo")
    //调用该请求的剩余处理程序
    c.Next()
 
    fmt.Println("2-我是一个中间件-initMiddlewareTwo")
 
}
 
func main() {
    // 创建一个默认的路由引擎
    r := gin.Default()
    //自定义模板函数  注意要把这个函数放在加载模板前
    r.SetFuncMap(template.FuncMap{
        "UnixToTime": UnixToTime,
    })
    //加载模板 放在配置路由前面
    r.LoadHTMLGlob("templates/**/*")
    //配置静态web目录   第一个参数表示路由, 第二个参数表示映射的目录
    r.Static("/static", "./static")
 
    //全局中间件
    r.Use(initMiddlewareOne, initMiddlewareTwo)
 
    r.GET("/", func(c *gin.Context) {
        fmt.Println("这是一个首页")
        c.String(200, "gin首页")
    })
 
    r.GET("/news", func(c *gin.Context) {
        c.String(200, "新闻页面")
    })
    r.GET("/login", func(c *gin.Context) {
        c.String(200, "login")
    })
 
    r.Run()
}

路由分组中间件 middlewares->init.go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package middlewares
 
import (
    "fmt"
    "time"
 
    "github.com/gin-gonic/gin"
)
 
func InitMiddleware(c *gin.Context) {
    //判断用户是否登录
 
    fmt.Println(time.Now())
 
    fmt.Println(c.Request.URL)
 
    c.Set("username", "张三")
 
    //定义一个goroutine统计日志  当在中间件或 handler 中启动新的 goroutine 时,不能使用原始的上下文(c *gin.Context), 必须使用其只读副本(c.Copy())
    cCp := c.Copy()
    go func() {
        time.Sleep(2 * time.Second)
        fmt.Println("Done! in path " + cCp.Request.URL.Path)
    }()
}

  controllers->admin->indexController.go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package routers
 
import (
    "gindemo08/controllers/admin"
    "gindemo08/middlewares"
 
    "github.com/gin-gonic/gin"
)
 
func AdminRoutersInit(r *gin.Engine) {
    //middlewares.InitMiddleware中间件
    adminRouters := r.Group("/admin", middlewares.InitMiddleware)
    {
        adminRouters.GET("/", admin.IndexController{}.Index)
 
        adminRouters.GET("/user", admin.UserController{}.Index)
        adminRouters.GET("/user/add", admin.UserController{}.Add)
        adminRouters.GET("/user/edit", admin.UserController{}.Edit)
 
        adminRouters.GET("/article", admin.ArticleController{}.Index)
        adminRouters.GET("/article/add", admin.ArticleController{}.Add)
        adminRouters.GET("/article/edit", admin.ArticleController{}.Edit)
    }
}

  

posted on   KOA2后端  阅读(172)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示