Go/Gin 项目封装拆分步骤

原始项目

package main

import(
    "github.com/gin-gonic/gin"
    "github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
)

type Todo struct{
	ID int `json:"id"`
	Title string `json:"title"`
	Status bool `json:"status"`
}

var(
	DB *gorm.DB
)

func InitMySql() (err error) {
	dsn := "root:root123@tcp(127.0.0.1:3306)/list?charset=utf8mb4&parseTime=True&loc=Local"
	DB1, err := gorm.Open("mysql", dsn)
	if err != nil {
		return
	}
	DB = DB1
	return DB1.DB().Ping()
}

func main(){

    //连接数据库
    err := InitMySql()
	if err != nil{
		panic(err)
	}
	defer DB.Close()

    //定义路由
    r := gin.Default()
	r.Static("/static", "static")
	r.LoadHTMLGlob("templates/*")
	r.GET("/", controller.IndexHandler)
	v1Group := r.Group("v1")
	{
		v1Group.POST("/todo", function(c *gin.Context){ ... })
		v1Group.GET("/todo",  function(c *gin.Context){ ... })
		v1Group.PUT("/todo/:id",  function(c *gin.Context){ ... })
		v1Group.DELETE("/todo/:id",  function(c *gin.Context){ ... })
	}

    r.Run()

}

应拆分成

dao 主要用于数据库等的连接初始化

model 主要用于数据的curd

controller 主要用于路由中绑定的处理过程

router 主要用于封装路由列表

1、controller(controller\controller.go)

 

 

 

 

你可能感兴趣的:(go,GO,GIN)