gin框架简单搭建一个MVC架构
Go.zip框架源码
实现了MVC架构 , 使用zap构建日志系统,gorm作为模型层。
main.go入口文件
package main import ( "github.com/gin-gonic/gin" "goweb/common" "goweb/route" ) func main() { //根据输入字符串设置gin模式 gin.SetMode(common.CONFIG["mod"]) r := route.WebRun() // Run("里面不指定端口号默认为8080") r.Run(":" + common.CONFIG["httpport"]) }
Route.go路由注册函数
package route import ( "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/cookie" "github.com/gin-gonic/gin" "goweb/common/logger" "goweb/common/middleware" ) //路由注册函数 func WebRun() *gin.Engine { // 创建路由 r := gin.Default() r.Delims("{[", "]}") //初始化日志配置参数 logger.Init("", "./logs/app.log", 0, 0, 0) //注册日志记录中间件 r.Use(logger.GinLogger(), logger.GinRecovery(true)) // 创建基于cookie的存储引擎,参数是用于加密的密钥 store := cookie.NewStore([]byte("gogogowebweb123mysession")) // 设置session中间件,参数mysession,指的是session的名字,也是cookie的名字 // store是前面创建的存储引擎,我们可以替换成其他存储引擎 r.Use(sessions.Sessions("mysession", store)) r.Use(middleware.Cors()) //注册前台路由组 r = IndexRouter(r) //注册后台路由组 r = AdminRouter(r) //定义静态资源路由 r.Static("/static", "./static") //404文件 r.NoRoute(func(c *gin.Context) { r.LoadHTMLGlob("app/error/views/**/*") c.HTML(404, "error/404.html", gin.H{ "title": "页面404了", }) }) return r }
可自定义注册全局中间件或方法中间件
//后台应用路由代码
package route import ( "github.com/gin-gonic/gin" admin "goweb/app/admin/controller" "goweb/app/admin/middleware" ) //后台路由组 func AdminRouter(r *gin.Engine) *gin.Engine { //调用控制器结构体 loginC := &admin.LoginController{} indexC := &admin.IndexController{} //注册后台路由 AppAdmin := r.Group("/admin", middleware.AuthorityVerification(), func(ctx *gin.Context) { //定义模板文件路径 r.LoadHTMLGlob("app/admin/views/**/*") }) { IndexController := AppAdmin.Group("/index") { IndexController.GET("/index", indexC.Index) IndexController.GET("/console", indexC.Console) } AdminController := AppAdmin.Group("/login") { AdminController.GET("/index", loginC.Index) AdminController.POST("/login", loginC.Login) } } return r }
.......
目录结构
更多其它看源码...
-------------本文结束感谢您的阅读-------------