go项目路由封装

60 阅读1分钟

项目目录

go router.png

main.go

package main

import (
	"go-project/route"
)

func main() {
	r := route.Router()
	r.Run(":8080")
}

router.go

package route

import (
	"go-project/database"

	"github.com/gin-gonic/gin"
)

/*2.路由函数*/
func Router() *gin.Engine {
	//连接数据库,返回连接对象

	//启动路由
	r := gin.Default()
	//路由分组
	user := r.Group("/user")
	{

		//插入数据
		user.POST("/insert", database.Insert)

		//返回json测试数据
		user.GET("/hello", func(c *gin.Context) {
			// c.JSON:返回JSON格式的数据
			c.JSON(200, gin.H{
				"message": "nihao,feng",
			})
		})
	}

	return r
}

curd.go

package database

import (
	"fmt"

	"github.com/gin-gonic/gin"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

type Message struct {
	gorm.Model
	Title   string `json:"title"`
	Content string `json:"content"`
}

// 定义全局的数据库连接变量
var db *gorm.DB

/*init数据库连接函数*/
func init() {
	var err error
	dsn := "root:root@tcp(127.0.0.1:3306)/ceshi?charset=utf8mb4&parseTime=True&loc=Local"
	db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		panic("数据库连接失败")
	}
	// 自动化程序:创建和修改表
	//db.AutoMigrate(&Message{})
}

/*插入操作*/
func Insert(c *gin.Context) {

	var data Message
	err := c.ShouldBindJSON(&data)

	if err != nil {
		c.JSON(200, gin.H{
			"error": err.Error(),
		})
		return
	}
	c.JSON(200, gin.H{
		"json": data,
	})
	result := db.Create(&data)
	if result.Error != nil {
		fmt.Println("插入失败:", result.Error)
		return
	}
	fmt.Printf("插入成功,用户 ID: %d\n", data.ID)

}

注意事项:

  • 正确创建包和导入包
  • 理解 := 和 = 的区别,掌握如何给db全局变量赋值
  • 掌握init函数的用法,可以在程序的任意一个包中使用