我们可以在路由映射函数执行之前做一些别的操作,比如记录下日志,

func WriterLog() func(c *gin.Context) {
	return func(c *gin.Context) {
		fmt.Println("记录日志")
		c.Next()
	}
}

然后我们在路由里面使用他

func main() {
	r := gin.Default()
	//用户模块
	userRouter := r.Group("/user")
	userRouter.Use(WriterLog())
	userRouter.POST("/login", user.Login)
	userRouter.POST("/register", user.Register)
	userRouter.POST("/editor", user.Editor)
	userRouter.POST("/log/out", user.LogOut)
	userRouter.POST("/set/password", user.SetPassword)

	//文章模块
	articleRouter := r.Group("/article")
	articleRouter.POST("/add", article.Add)
	articleRouter.POST("/update", article.Update)
	articleRouter.POST("/list", article.List)
	articleRouter.POST("/delete", article.Delete)
	r.Run(":8000")
}

同样我们也可以用中间件来校验我们的登录状态等等。

设置静态路由

func main() {
	router := gin.Default()
	router.Static("/assets", "./assets")
	router.StaticFS("/more_static", http.Dir("my_file_system"))
	router.StaticFile("/favicon.ico", "./resources/favicon.ico")

	// Listen and serve on 0.0.0.0:8080
	router.Run(":8080")
}