main.go 完整配置
package main
import (
"net/http"
"time"
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
// ====================== 数据库配置(你直接用自己的)======================
const (
dbUser = "root" // 你能用的MySQL用户名
dbPassword = "" // 你的密码
dbName = "testdb" // 数据库
dbHost = "127.0.0.1"
dbPort = "3306"
)
// 全局DB
var db *gorm.DB
// User 数据表模型
type User struct {
gorm.Model
Name string `json:"name"`
Age uint `json:"age"`
City string `json:"city"`
}
// 初始化MySQL
func initDB() {
dsn := dbUser + ":" + dbPassword + "@tcp(" + dbHost + ":" + dbPort + ")/" + dbName + "?charset=utf8mb4&parseTime=True&loc=Local"
var err error
db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("数据库连接失败")
}
// 自动建表
db.AutoMigrate(&User{})
}
func main() {
// 初始化数据库
initDB()
// 创建Gin路由
r := gin.Default()
// 跨域中间件(必须在路由注册之前)
r.Use(cors.New(cors.Config{
AllowOrigins: []string{"http://localhost:5173"},
AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
AllowHeaders: []string{"Origin", "Content-Type", "Authorization"},
MaxAge: 12 * time.Hour,
OptionsResponseStatusCode: http.StatusOK, // 可选:把预检改成200
}))
// ======== 5个CRUD接口 =========
// 1. 创建用户
r.POST("/user", createUser)
// 2. 获取单个用户
r.GET("/user/:id", getUser)
// 3. 获取用户列表
r.GET("/users", getUserList)
// 4. 修改用户
r.PUT("/user/:id", updateUser)
// 5. 删除用户
r.DELETE("/user/:id", deleteUser)
// 启动服务
r.Run(":8080")
}
// 1. 创建用户
func createUser(c *gin.Context) {
var user User
c.ShouldBindJSON(&user)
db.Create(&user)
c.JSON(http.StatusOK, gin.H{"data": user})
}
// 2. 获取单个用户
func getUser(c *gin.Context) {
id := c.Param("id")
var user User
db.First(&user, id)
c.JSON(http.StatusOK, gin.H{"data": user})
}
// 3. 获取用户列表
func getUserList(c *gin.Context) {
var users []User
db.Find(&users)
c.JSON(http.StatusOK, gin.H{"data": users})
}
// 4. 修改用户
func updateUser(c *gin.Context) {
id := c.Param("id")
var user User
db.First(&user, id)
var data User
c.ShouldBindJSON(&data)
user.Name = data.Name
user.Age = data.Age
user.City = data.City
db.Save(&user)
c.JSON(http.StatusOK, gin.H{"data": user})
}
// 5. 删除用户
func deleteUser(c *gin.Context) {
id := c.Param("id")
db.Delete(&User{}, id)
c.JSON(http.StatusOK, gin.H{"message": "删除成功"})
}
作者:人参,每篇随笔皆原创(除非注明原作者的随笔),欢迎指正!

浙公网安备 33010602011771号