1、服务模块
前二篇博客搭建好了go开发环境,连接上了数据库,但是代码全部写的main.go中,显然不符合开发规范,只是入门教程。现在我们把main.go进行改造,首先将对后台数据访问部分放到service中去。
新建一个service目录,下面建立service.go文件,文件内容如下:
package service
import (
"fmt"
"studyApp/models"
"time"
"github.com/gin-gonic/gin"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
func GetIndex(context *gin.Context) {
context.JSON(200, gin.H{
"message": "hello, 中国!",
})
}
func CreateUser(context *gin.Context) {
// 连接
dsn := "rensoft:rensoft12345@tcp(127.0.0.1:3306)/rensoft?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
// 建表
db.AutoMigrate(&models.AppUser{})
db.Create(&models.AppUser{Username: "测试用户", Logintime: time.Now(), Logouttime: time.Now()}) // 添加记录
// 读出
var user1 = new(models.AppUser)
db.Last(user1)
fmt.Println(user1)
// 返回
context.JSON(200, gin.H{
"message": "hello, 中国!",
"object": user1,
})
}
2、路由模块
web路由模块采用gin框架,创建一个router目录,里面建立router.go文件
router.go文件内容如下:
package router
import (
"studyApp/service"
"github.com/gin-gonic/gin"
)
func Router() *gin.Engine {
r := gin.Default()
r.GET("/index", service.GetIndex)
r.GET("/createUser", service.CreateUser)
return r
}
3、重构main.go
主程序main.go重构如下:
import (
"studyApp/router"
)
func main() {
// fmt.Println(123)
// dsn := "rensoft:rensoft12345@tcp(127.0.0.1:3306)/rensoft?charset=utf8mb4&parseTime=True&loc=Local"
// db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
// if err != nil {
// panic(err)
// }
// // 迁移表创建对应关系
// db.AutoMigrate(&models.AppUser{})
// db.Debug().Create(&models.AppUser{Username: "测试用户", Logintime: time.Now(), Logouttime: time.Now()}) // 添加记录
r := router.Router()
r.Run(":8080")
}
使用web路由,web服务部署到端口8080上。
运行main.go,在浏览器上输入http://localhost:8080/index,结果如下:
在浏览器上输入http://localhost:8080/createUser,结果如下:
查看数据库,已经增加了用户数据。
好了,恭喜你入门go语言开发!