本帖最后由 prettyafei 于 2024-12-25 10:34 编辑
最近接到一个商业项目
经过漫长的扯皮
最终以一台酷路泽的四个月油价谈妥
由于是商业项目
核心不会分享
只是记录一下第一次用go开发高性能商业项目的一个记录吧
有人喜欢就继续更新
最终确认的框架是go+gin+fyne (选择fyne是为了兼容windows、linux、mac 以及后期可能会添加的移动端)
后端是go+gin+mysql+gorm
管理端就是vue了
确认了框架,明天开始更新!
第一天:准备后端api和数据库表结构设计
第一天:准备后端api和数据库表结构设计
环境配置就不说了 百度一堆
一、
go init //初始化项目
go get -u github.com/gin-gonic/gin //安装gin
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
//main.go
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "Hello, World!",
})
})
r.Run()
}
go run . 运行 ok 没问题
二、
//conf/config.go
package config
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
var DB *gorm.DB
func ConnectDB() {
var err error
// 配置数据库连接字符串,格式为:用户名:密码@(主机:端口)/数据库名?charset=utf8mb4&parseTime=True&loc=Local
dsn := "your_username:your_password@(127.0.0.1:3306)/your_database_name?charset=utf8mb4&parseTime=True&loc=Local"
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err!= nil {
panic("数据库连接失败: " + err.Error())
}
}
//后面将配置优化到yml文件里面
//main.go
package main
import (
"go-fyne/conf"
)
func main() {
config.ConnectDB()
}
// 定义model
// 路径models/user_model.go
//个人不喜欢将数据库操作放到model中。。。
package models
import(
)
type User struct {
Id int `json:"id"`
Name string `json:"name"`
}
//绑定数据库表名
func (User) TableName() string {
return "user"
}
//Controllers/user_controller.go
package controllers
import (
"github.com/gin-gonic/gin"
"net/http"
"go-fyne/models"
"go-fyne/conf"
)
func CreateUser(c *gin.Context) {
var user models.User
if err := c.BindJSON(&user); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
result := config.DB.Create(&user)
if result.Error!= nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": result.Error.Error()})
return
}
c.JSON(http.StatusCreated, user)
}
//routers/router.go
package routers
import (
"github.com/gin-gonic/gin"
"go-fyne/controllers"
)
// SetupUserRoutes 用于设置用户相关的路由
func SetupUserRoutes(r *gin.Engine) {
userGroup := r.Group("/users")
{
userGroup.POST("", controllers.CreateUser)
// userGroup.GET("/:id", controllers.GetUser)
// userGroup.PUT("", controllers.UpdateUser)
// userGroup.DELETE("/:id", controllers.DeleteUser)
}
}
//更新main.go
package main
import (
"go-fyne/conf"
"go-fyne/routers"
"github.com/gin-gonic/gin"
)
func main() {
config.ConnectDB()
r := gin.Default()
routers.SetupUserRoutes(r)
r.Run()
}
代码只是截取了部分,省略的部分就是常见的增删改查了,没啥好写的。
鉴权中间件 明天再加,今天先把前后端框架搭建起来。
第二天 增加鉴权中间件
|