bubble小清单后端代码
bubble小清单后端代码#
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/jinzhu/gorm"
_"github.com/jinzhu/gorm/dialects/mysql"//别忘加驱动
)
//go mod tidy
//定义全局DB
var(
DB *gorm.DB
)
//创建模型 Todu model
type Todo struct {
ID int `json:"id"`
Title string `json:"title"`
Status bool `json:"status"`
}
//链接数据库
func initMySQL() (err error) {
dsn:="root:123456@tcp(127.0.0.1:3306)/bubble?charset=utf8mb4&parseTime=True&loc=Local"
DB,err=gorm.Open("mysql",dsn)
if err!=nil{
return
}
return DB.DB().Ping()
}
func main() {
//创建数据库
//sql命令:create database bublle;
//use bublle;
//链接数据库
err:=initMySQL()
if err != nil {
fmt.Println(err)
}
//延时关闭,程序退出关闭数据库
defer DB.Close()
//模型绑定,把模型与数据库的表进行绑定
DB.AutoMigrate(&Todo{})//todos
//默认路由
r:=gin.Default()
//告诉gin模板文件引用的静态文件去哪里找
r.Static("/static","static")
//告诉gin去哪里找模板
r.LoadHTMLGlob("templates/*")
//GET:请求方式;/:请求的路径
r.GET("/", func(c *gin.Context) {
c.HTML(200,"index.html",nil)
})
//定义一个v1版本api:路由组
v1Group:=r.Group("v1")
{
//添加
v1Group.POST("/todo", func(c *gin.Context) {
//前端页面填写待办事项点击提交,会发送请求到这里
//从请求中把数据拿出来
//定义存放的变量
var todo Todo
//数据绑定
c.ShouldBind(&todo)
//存入数据库,返回响应
if err=DB.Create(&todo).Error;err!=nil{
c.JSON(200,gin.H{
"error":err.Error()})
}else {
c.JSON(200,todo)
}
})
//查看代办
v1Group.GET("/todo", func(c *gin.Context) {
//查询todo这个表的所有数据
var todoList []Todo
if err=DB.Find(&todoList).Error;err!=nil{
c.JSON(200,err.Error())
}else {
c.JSON(200,todoList)
}
})
//修改某一个代办事项
v1Group.PUT("/todo/:id", func(c *gin.Context) {
id,ok :=c.Params.Get("id")
if !ok{
c.JSON(200,gin.H{
"error":"id不存在"})
return
}
var todo Todo
if err=DB.Where("id=?",id).First(&todo).Error;err!=nil{
c.JSON(200,gin.H{
"error":err.Error()})
return
}
//fmt.Println(todo)
c.BindJSON(&todo)
//fmt.Println(todo)
if err=DB.Save(&todo).Error;err!=nil{
c.JSON(200,gin.H{
"error":err.Error()})
}else {
c.JSON(200,todo)
}
})
//删除
v1Group.DELETE("/todo/:id", func(c *gin.Context) {
id,ok :=c.Params.Get("id")
if !ok{
c.JSON(200,gin.H{
"error":"id不存在"})
return
}
if err=DB.Where("id=?",id).Delete(Todo{}).Error;err!=nil{
c.JSON(200,gin.H{
"error":err.Error()})
return
}else {
c.JSON(200,gin.H{
id:"deleted",
})
}
})
}
//启动
r.Run(":8080")
}
作者:suehoo
出处:https://www.cnblogs.com/suehoo/p/16929426.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!