Gin+Gorm练手小项目bubble清单企业级结构剖析
发布人:shili8
发布时间:2025-01-31 06:53
阅读次数:0
**Gin + GORM 实践小项目: Bubble 清单**
在本文中,我们将使用 Gin 和 GORM 构建一个简单的企业级应用程序:Bubble 清单。这个应用程序允许用户创建、编辑和删除清单项。
###1.依赖安装首先,需要安装 Gin 和 GORM 的依赖:
gogo get -u github.com/gin-gonic/gingo get -u gorm.io/gorm
###2. 模型定义我们将使用 GORM 来定义我们的模型。首先,我们创建一个 `models` 包来存放我们的模型。
go// models/bubble.gopackage modelsimport "gorm.io/gorm" type Bubble struct { gorm.Model Title string `json:"title"` Description string `json:"description"` }
###3. 数据库连接接下来,我们需要配置数据库连接。我们使用 GORM 的内置支持来连接 MySQL。
go// main.gopackage mainimport ( "gorm.io/driver/mysql" "gorm.io/gorm" "github.com/gin-gonic/gin" ) func main() { // 数据库连接配置 dsn := "root:password@tcp(localhost:3306)/bubble?charset=utf8mb4&parseTime=True&loc=Local" // 初始化 GORM gormDB, err := gorm.Open(mysql.New(mysql.Config{ DSN:322 dsn, }), &gorm.Config{}) if err != nil { panic(err) } // 使用 GORM 的 AutoMigrate 来创建表结构 gormDB.AutoMigrate(&models.Bubble{}) }
###4. Gin 路由配置接下来,我们需要配置 Gin 的路由。我们将使用 Gin 的内置支持来定义路由。
go// main.gopackage mainimport ( "github.com/gin-gonic/gin" ) func main() { // 初始化 Gin router := gin.Default() // 定义路由 v1 := router.Group("/api/v1") { v1.GET("/bubbles", getBubbles) v1.POST("/bubbles", createBubble) v1.GET("/bubbles/:id", getBubble) v1.PUT("/bubbles/:id", updateBubble) v1.DELETE("/bubbles/:id", deleteBubble) } // 启动 Gin服务 router.Run(":8080") }
###5. 控制器实现最后,我们需要实现控制器来处理路由请求。
go// controllers/bubble.gopackage controllersimport ( "net/ /> "github.com/gin-gonic/gin" ) type BubbleController struct{} func (c *BubbleController) getBubbles(ctx *gin.Context) { // 获取所有清单项 bubbles := []models.Bubble{} db := ctx.MustGet("db").(*gorm.DB) db.Find(&bubbles) // 返回清单项列表 ctx.JSON( bubbles) } func (c *BubbleController) createBubble(ctx *gin.Context) { // 获取清单项数据 var bubble models.Bubble err := ctx.BindJSON(&bubble) if err != nil { ctx.Status( /> return } // 创建清单项 db := ctx.MustGet("db").(*gorm.DB) db.Create(&bubble) // 返回创建的清单项 ctx.JSON( bubble) } func (c *BubbleController) getBubble(ctx *gin.Context) { // 获取清单项 ID id := ctx.Param("id") // 获取清单项 var bubble models.Bubble db := ctx.MustGet("db").(*gorm.DB) db.First(&bubble, id) // 返回清单项 if bubble.ID ==0 { ctx.Status( /> return } ctx.JSON( bubble) } func (c *BubbleController) updateBubble(ctx *gin.Context) { // 获取清单项 ID id := ctx.Param("id") // 获取清单项数据 var bubble models.Bubble err := ctx.BindJSON(&bubble) if err != nil { ctx.Status( /> return } // 更新清单项 db := ctx.MustGet("db").(*gorm.DB) db.Model(&models.Bubble{ID: id}).Updates(bubble) // 返回更新的清单项 ctx.JSON( bubble) } func (c *BubbleController) deleteBubble(ctx *gin.Context) { // 获取清单项 ID id := ctx.Param("id") // 删除清单项 db := ctx.MustGet("db").(*gorm.DB) db.Delete(&models.Bubble{ID: id}) // 返回删除成功的状态码 ctx.Status( />}
###6. 测试最后,我们需要测试我们的应用程序。
bashgo test -v ./controllers/bubble.go
如果所有测试通过,则表示我们的应用程序正常工作。
以上就是使用 Gin 和 GORM 构建一个简单的企业级应用程序:Bubble 清单的步骤。