gin随笔01

gin简单学习

前端数据执行函数:

<body>
    {{.title | safe}}
</body>

r.SetFuncMap(template.FuncMap{
		"safe": func(str string) template.HTML{
			return template.HTML(str)
		},
	})

静态文件处理

func main() {
	r := gin.Default()
	r.Static("/自定义名字", "./static")
	//r.LoadHTMLFiles("templates/posts/index.html", "templates/users/index.html")
	r.LoadHTMLGlob("templates/**/*")   **表示所有文件夹,*表示所有文件	
    r.Run(":8080")
}

获取当前执行程序的路径

func getCurrentPath() string {
	if ex, err := os.Executable(); err == nil {
		return filepath.Dir(ex)
	}
	return "./"
}

HTTP重定向

r.GET("/test", func(c *gin.Context) {
	c.Redirect(http.StatusMovedPermanently, "http://www.sogo.com/")
})

路由重定向

r.GET("/test", func(c *gin.Context) {
    // 指定重定向的URL
    c.Request.URL.Path = "/test2"
    r.HandleContext(c)
})
r.GET("/test2", func(c *gin.Context) {
    c.JSON(http.StatusOK, gin.H{"hello": "world"})
})

路由组

我们可以将拥有共同URL前缀的路由划分为一个路由组。习惯性一对{}包裹同组的路由,这只是为了看着清晰,你用不用{}包裹功能上没什么区别。

func main() {
	r := gin.Default()
	userGroup := r.Group("/user")
	{
		userGroup.GET("/index", func(c *gin.Context) {...})
		userGroup.GET("/login", func(c *gin.Context) {...})
		userGroup.POST("/login", func(c *gin.Context) {...})

	}
	shopGroup := r.Group("/shop")
	{
		shopGroup.GET("/index", func(c *gin.Context) {...})
		shopGroup.GET("/cart", func(c *gin.Context) {...})
		shopGroup.POST("/checkout", func(c *gin.Context) {...})
	}
	r.Run()
}

Gin中间件

imageimage

image

//两种中间件定义形式
func f1(flag bool) gin.HandlerFunc {
	return func(c *gin.Context) {
        if flag {
            //to do
        } else {
            
        }
	}
}

 func f2(c *gin.Context) {
	
})
//注册中间件
全局中间件
r.Use(f1,f2)
// 给/test2路由单独注册中间件(可注册多个)
	r.GET("/test2", f1(true), func(c *gin.Context) {
	})

//为路由组注册中间件有以下两种写法
//1:
shopGroup := r.Group("/shop", f1(true))
{
    shopGroup.GET("/index", func(c *gin.Context) {...})
    ...
}
//2:
shopGroup := r.Group("/shop")
shopGroup.Use(f1(true))
{
    shopGroup.GET("/index", func(c *gin.Context) {...})
    ...
}
posted @ 2021-12-11 23:15  君逸不是铁Five  阅读(50)  评论(0)    收藏  举报