路由中间件main.go

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

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

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

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 2022-10-02 18:24  KOA2后端  阅读(181)  评论(0)    收藏  举报